用jQuery插件jVectorMap制作中国省份区域图

jVectorMap是一个优秀的、兼容性强的jQuery地图插件。它可以工作在包括IE6在内的各款浏览器中,矢量图输出,除官方提供各国地图数据外,用户可以使用数据转换程序定制地图数据。

这里基于jVectorMap插件制作中国地图,其中近期有活动进行的省份区域变色显示,点击有活动的省份区域,便打开对应活动列表页面。

首先引入必需的文件,包括样式表、jQuery框架、jVectorMap库,中国地图数据库:

<link href="jquery.vector-map.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="jquery.vector-map.js"></script>
<script type="text/javascript" src="china-zh.js"></script>

地图放置区域HTML标签:

<div id="map"></div>

编写JavaScript函数,实现所需功能:

<script type="text/javascript">
$(function() {
  /*id为中国省份标识符,name为对应省份名称,两者固定。event为活动情况,
  url为活动列表页面地址,数据可后台动态生成,这两项有活动的地区填写,无则留空。*/
  var dataStatus = [
    { id: 'HKG', name: '香港', event: '', url: '' },
    { id: 'HAI', name: '海南', event: '', url: '' },
    { id: 'YUN', name: '云南', event: '', url: '' },
    { id: 'BEJ', name: '北京', event: '(3个活动)', url: '/event/1' },
    { id: 'TAJ', name: '天津', event: '', url: '' },
    { id: 'XIN', name: '新疆', event: '', url: '' },
    { id: 'TIB', name: '西藏', event: '', url: '' },
    { id: 'QIH', name: '青海', event: '', url: '' },
    { id: 'GAN', name: '甘肃', event: '', url: '' },
    { id: 'NMG', name: '内蒙古', event: '', url: '' },
    { id: 'NXA', name: '宁夏', event: '', url: '' },
    { id: 'SHX', name: '山西', event: '', url: '' },
    { id: 'LIA', name: '辽宁', event: '', url: '' },
    { id: 'JIL', name: '吉林', event: '', url: '' },
    { id: 'HLJ', name: '黑龙江', event: '', url: '' },
    { id: 'HEB', name: '河北', event: '', url: '' },
    { id: 'SHD', name: '山东', event: '', url: '' },
    { id: 'HEN', name: '河南', event: '', url: '' },
    { id: 'SHA', name: '陕西', event: '', url: '' },
    { id: 'SCH', name: '四川', event: '(1个活动)', url: '/event/2' },
    { id: 'CHQ', name: '重庆', event: '', url: '' },
    { id: 'HUB', name: '湖北', event: '(1个活动)', url: '/event/3' },
    { id: 'ANH', name: '安徽', event: '', url: '' },
    { id: 'JSU', name: '江苏', event: '', url: '' },
    { id: 'SHH', name: '上海', event: '', url: '' },
    { id: 'ZHJ', name: '浙江', event: '', url: '' },
    { id: 'FUJ', name: '福建', event: '', url: '' },
    { id: 'TAI', name: '台湾', event: '', url: '' },
    { id: 'JXI', name: '江西', event: '', url: '' },
    { id: 'HUN', name: '湖南', event: '', url: '' },
    { id: 'GUI', name: '贵州', event: '', url: '' },
    { id: 'GXI', name: '广西', event: '', url: '' }, 
    { id: 'GUD', name: '广东', event: '', url: '' }
  ];

  $('#map').vectorMap({
    map: 'china_zh',
    backgroundColor: false,
    color: "#BBBBBB",
    hoverColor: false,
    //显示各地区名称和活动
    onLabelShow: function (event, label, code) {
      $.each(dataStatus, function (i, items) {
        if (code == items.id) {
          label.html(items.name + items.event);
        }
      });
    },
    //鼠标移入省份区域,改变鼠标状态
    onRegionOver: function(event, code){
      $.each(dataStatus, function (i, items) {
        if ((code == items.id) && (items.event != '')) {
          $('#map').css({cursor:'pointer'});
        }
      });
    },
    //鼠标移出省份区域,改回鼠标状态
    onRegionOut: function(event, code){
      $.each(dataStatus, function (i, items) {
        if ((code == items.id) && (items.event != '')) {
          $('#map').css({cursor:'auto'});
        }
      });
    },
    //点击有活动的省份区域,打开对应活动列表页面
    onRegionClick: function(event, code){
      $.each(dataStatus, function (i, items) {
        if ((code == items.id) && (items.event != '')) {
          window.location.href = items.url;
        }
      });
    }  
  });
  //改变有活动省份区域的颜色
  $.each(dataStatus, function (i, items) {
    if (items.event != '') {
      var josnStr = "{" + items.id + ":'#00FF00'}";
      $('#map').vectorMap('set', 'colors', eval('(' + josnStr + ')'));
    }
  });
});
</script>

最终效果为:

用jQuery插件jVectorMap制作中国省份区域图

防倾覆和侧滑的机器人脚部结构设计

双足机器人步行时,左右脚交替地落地支撑,形成一个不断移动和变化的支撑面,如果在行走过程中,整个机器人的重心在地面上的投影点始终保持在支撑面内,就可以保证机器人不绕其支撑脚边缘倾覆。

另外,双足稳定步行还需保证处于支撑状态的脚与地面相对瞬时静止,使机器人在步行过程中不至发生侧向滑动。

一般的解决办法是用陀螺仪测得重心偏差,反馈给舵机调整步态。

而本文提出一种巧妙的机器人脚部结构设计,可实现如下功能:

  • 自动调节机器人重心
  • 缓减脚部着地冲击
  • 增加摩擦,防止侧滑

具体结构如下图示,两根受力接触杆为半椭圆形,在脚后跟处分别与等臂杠杆两端铰接,等臂杠杆与中间支架铰接,两接触杆铰链处与脚底板之间安装弹簧。

防倾覆和侧滑的机器人脚部结构设计

身体外侧的接触杆椭圆半径比内侧大,其高度低于内侧,故而落地支撑下压时机器人身体向外侧倾斜。这样在双足机器人步行时,左右脚交替落地支撑,可以调整身体左右摆动,调整重心。

两根弹簧构成的柔软后跟可以减缓脚部着地冲击带来的不稳定性。

接触杆有橡胶涂层,增加脚部与地面摩擦力,防止机器人单脚支撑时侧滑。

双足机器人步行体态和重心路径见下面示意图:

双足机器人步行体态和重心路径示意图

参考:Steven H. Collins. A Three-Dimensional Passive-Dynamic Walking Robot with Two Legs and Knees

STC12C5A60S2无线遥控流水灯

STC12C5A60S2是STC生产的新一代单片机,指令代码完全兼容传统8051。本文描述在面包板上搭建STC12C5A60S2单片机最小系统,并连接8个LED发光二极管组成流水灯,编写程序,用R06A无线遥控控制流水灯的方向。主要目的是熟悉单片机最小系统和R06A无线遥控的控制方式。

使用元器件列表:

编号 名称 型号 数量
  单片机 STC12C5A60S2 1
  芯片座 40P 1
  面包板   1
C1 电解电容 10μF,16V 1
R1 色环电阻 10K,1/4W 1
C2 瓷片电容 30pF,16V 2
X1 无源晶振 11.0592M 1
R2 色环电阻 1K,1/4W 8
  发光二极管   8
  无线遥控套件 R06A型,PT2262和PT2272组合,L4互锁 1
  单片机下载器 STC51,5V电压输出 1
  杜邦线 针对针、孔对孔、针对孔 若干

电路原理图:

STC12C5A60S2无线遥控流水灯电路原理图

完成接线后的实际电路:

STC12C5A60S2无线遥控流水灯实际电路

C程序:

#include <STC_NEW_8051.H>
#include <intrins.h>

unsigned char led;
sbit key1=P2^0;
sbit key2=P2^1;

void delay(unsigned int z)
{
  unsigned int x,y;
  for(x=z;x>0;x--)
    for(y=110;y>0;y--);
}

void main (void){
  led=0x01;
  P0=00000000;
  while(1){
    if(key1==1){
      P0=led;
      delay(100);
      led=_crol_(led,1);
    }
    if(key2==1){
      P0=led;
      delay(100);
      led=_cror_(led,1);
    }
  }
}

将程序编译后烧入单片机,实现功能为:按遥控器C键流水灯朝一个方向流动,按D键流水灯换向,按A键或B键流水灯停止流动。

蛇形机器人关节结构设计

蛇形机器人是仿生机器人家族中的一员,具有生物蛇的运动机理和行为方式,适应各种地形,并可攀爬障碍物,在许多领域具有广泛应用前景。

蛇靠身体的变形与地面作用产生驱动力,最典型的运动方式为S形蜿蜒运动,即借助身体侧面接触凸凹不平的地面从而产生前进力,这种运动方式普遍而高效。

东京工业大学机器人实验室研制了一种两栖蛇形机器人ACM-R5,它不仅能在陆地爬行,还能在水中游动。

ACM-R5采用模块化设计,所有关节结构相同,不仅节约设计和加工成本,而且便于维护。

ACM-R5的关节设计巧妙,每个关节有两个自由度,由两个伺服电机带动十字转轴上的齿轮来转动。关节由伸缩膜覆盖来防水,关节连接处用O型圈密封,具体机械结构如下图示:

ACM-R5蛇形机器人结构示意图

ACM-R5蛇形机器人结构图

Pro/E绘图格式的创建

在Pro/E工程图中,格式其实就是图纸框,还包括表格中的图纸名称、比例、绘图日期、页码、版本号、绘图人等信息及其字体等的设定。

Pro/E绘图格式的创建过程为:

1. 新建“格式”,其文件后缀为.frm,选择所需的“标准大小”(例如A4);

2. 右侧“启用草绘链”,使用“直线”,右键打开“绝对坐标”,绘制内框;

3. 菜单打开“表”-“插入”-“表”,依次点选“升序”、“左对齐”、“按长度”、“顶点”,选择内框右下角顶点,依次输入表格列宽和行高,绘制表格;

4. 菜单打开“表”-“合并单元格”,合并表格中的部分单元格;

5. 菜单打开“格式”-“文本样式库”-“新建”,设置需要的文本字体大小、对齐等格式;

6. 菜单打开“格式”-“缺省文本样式”,选择前面建立的“样式”,将其设置为默认文本样式;

7. 双击表格单元格,填写信息,其中可以用到的注释标签有:

&model_name 显示模型名称
&todays_date 显示当前日期
&scale 显示绘图比例
&dwg_name 显示工程图名称
&current_sheet 显示当前图纸页码
&total_sheets 显示总共图纸页码
&format 显示图纸规格
&type 显示模型类型

需要注意的是,上表的注释标签与其他文字之间必须用空格隔开。