Photos from RoboRace

September 26th, 2011 § 0 comments § permalink

Another exciting afternoon racing robots with friends. 😉

Taken by @vnsavitri Photo 1 Photo 2 Photo 3

Taken by Ricky

IMG 0245 IMG 0249 IMG 0251 IMG 0247]]>

Roboracing Competition – 2011/07/10

July 11th, 2011 § 0 comments § permalink

参赛者做最后的准备:

参赛者自我介绍:

比赛开始!

比赛赢家: Nelson Zhang (自主瓦力) and Michael Liao (遥控坦克)
非常感谢 盛大创新院 赞助了2台电子书做为奖品!

参赛者大合照:

感谢参赛者们的努力,你们是最棒的! 感谢盛大创新院慷慨的赞助! 感谢 TimeOut 杂志 报道这次的活动!感谢DFRobotRoboticFans 参与(尤其是叶琛Rocky)这次活动的筹备!感谢新单位帮忙做宣传!感谢昨天来围观的朋友们! 感谢那些没办法过来但是给我们精神支持的朋友们!感谢Andi 设计制作这次的活动海报与传单!感谢Paul 赞助海报印刷!感谢Bindy 帮忙翻译和贩卖饮料!感谢Michael 捐赠赢得的电子书作为下次的奖品和请参赛者们和饮料!感谢John 帮忙活动的筹备!感谢Airie 帮忙在人人网上做宣传!感谢旻琳负责整个活动的宣传、协调与筹备!感谢我们零距离家长论坛的j家长和孩子们的参观!

下一次的比赛预计会在8月底举办,敬请期待!

]]>

Roboracing Competition

July 8th, 2011 § 0 comments § permalink

欢迎有兴趣的朋友来围观!这里报名。 比赛分为两个部分: * 自动控制组 * 遥控组 ==>比赛细则<== 如果你的机器车也想参加比赛,请写邮件到: [email protected] 有兴趣赞助这个比赛请写邮件到:[email protected] 这里有上次的车赛花絮. 已报名的队伍: Team 1: Lauren Pan (Toy car modification robot) Team 2: Barry Xu (DIY robot) Team 3: Daniel (2WD Mobile robot kit) Team 4: Zhang Chen (Andriod control HCR) Team 5: Jiang Gui Long/Wu Tao/Zhang Jie ( Android Control HCR) Team 6: Rockets (Tank mobile robot) Team 7: Unknown (LEGO mobile robot) Team 8: Ricky Ye (HCR robot) Team 9: Ricky Ng-Adam (Autonomous robot toy car – ART) Team 10: Lutz Michaelis (Autonomous Beetleduino) Team 11: Paul Adams (Hoverbot Hubert) Team 12: Nelson Zhang (Autonomous Wall-E) Team 13: Lionello Lunesu (LEGO mobile robot) Team 14: David Li (Soccerbot) ]]>

Android & Robots

June 8th, 2011 § 1 comment § permalink

Android Open Accessory Development Kit.

Android3.1平台(也向下移植到了Android2.3.4)引进了Android Open Accessory support,这使得外部USB硬件(An Android USB accessory)能够与Android设备在一个特殊的“accessory”模式下互相通信。当一个Android设备在这个accessory模式下时,接入的硬件作为一个USB host(为总线供电以及枚举设备),而Android设备作为一个USB设备来使用。Android USB附件是特别设计的,用以附加在支持Android平台的硬件设备上并且遵守一个简单的附件协议(Android accessory protocol)使他们能够侦测支持附件模式的Android硬件设备。
工作坊是每周举行的(目前是英语教学)。我们将探索包括开发Android软件部分和单片机部分,涉及到的方面包括机器人的机械,电子以及软件工程学。 特别的,我们将一起研究那些兼容ADK的硬件开发板,比如Google IOIO boardSeeedstudio提供的新硬件。 付费的新车间会员可以免费参加。非会员需要支付50元/次。 更多的信息请查看“Android & Robots” wiki. 不要忘了做好准备工作以及加入我们的[email protected] mailing list!注意,这是一个需要大家合作的讨论会,我们希望每个人都能积极的参与和贡献自己的力量。

]]>

HCR Roboracing

May 25th, 2011 § 2 comments § permalink

Google SketchUp做的赛道设计图和赛道模拟

比赛视频剪辑

比赛剪影

http://bbs.roboticfan.com/showtopic-9231.aspx]]>

Insect Bot Workshop [2]

May 9th, 2011 § 1 comment § permalink

周日的虫虫工作坊有13人参与,10个小朋友加上家长,很热闹,很愉快的周日下午!

IMG 20110508 141501

]]>

Adding servo to RC car

May 6th, 2011 § 0 comments § permalink

遥控小车的改造 May 3rd, 2011

今天完成了遥控车的改造,这是自主控制的第一步。这辆车是在淘宝上买的,结构很简单,控制很简陋。方向就是将电机打死,这时候电流会非常大,而且对于将来的自主移动的精细控制带来不利因素。所以很早就想把它改成舵机控制的了,下面就是整个改造的过程。

这就是需要改造的部分。

NewImage

先将需要改造的部分画下来,便于设计框架结构。我不是机械出身的,所以就画个大概吧。

NewImage

结构图完成

NewImage

在图纸上设计新的结构

NewImage

根据设计切割材料

NewImage

最后完成的样子,由于是临时电路,也就没固定,看上去有点像垃圾车-_-b

NewImage

改造部分的特写

NewImage

再来一张

NewImage

这些只是机械部份,然后就是控制部份。由于舵机能够转动的角度范围到180度,而该车的转向轮仅能转动在30-40度之间。同时,自主移动机器人目标是在Arduino上面开发。所以我就一步到位,先用Arduino读取天地飞的pwm信号,然后经过转换,输出新的pwm信号给舵机,这样就不会因为卡住而损坏舵机了。

最后效果如下

http://v.youku.com/v_show/id_XMjYzOTc2NzA4.html

使用的程序非常简单,如下:

#include <Servo.h>
//Author:	HE Qichen
//Date:	2011-5-3
//Website:	http://gaishi.vicp.net
//Email:	heqichen(a)gaishi.vicp.net
Servo directionServo;
void setup()
{
  pinMode(2, INPUT);
  directionServo.attach(3);
}
void loop()
{
  int t, a;
  t = pulseIn(2, HIGH);
  a = map(t, 1000, 2000, 65, 115);
  directionServo.write(a);
}
]]>

Reading g-sensor with Arduino

May 6th, 2011 § 1 comment § permalink

Arduino读取g-sensor数据 May 2nd, 2011

在四轴飞行器上除了要有陀螺仪外,还要有个重要的传感器就是重力传感器。由于它们各自的误差,若使用单一的传感器会造成严重的精读问题,使飞行器丧失稳定性。所以要用两个传感器进行相互矫正。

现在重力传感器应用非常广,目前iphone等智能手机上都有重力传感器,包括笔者的一台山寨手机上都有重力传感器。

这次就是要用Android来读取重力传感器的数据。这个重力传感器模块是从淘宝购买的,模块非常简单,自己够买芯片来焊接也不成问题。根据它的datasheet,就能够知道如何使用这款重力加速度模块了。下面就进行详细的介绍

这个模块使用的芯片型号是MMA7260Q,(datasheet下载[PDF,229KB]),测试中的电路就是下面图片中的样子

Untitled

控制的目标是通过重力传感器的数据来控制舵机的转动。但是发现会有少量的抖动,于是在程序中加入了一个简单的滤波器,阶数没有仔细调,但是基本上能够进行控制了。

http://v.youku.com/v_show/id_XMjYzNjIyODIw.html

下面是芯片的特写

Untitled Untitled

下面是用到的代码

#include <Servo.h>
//Author:  HE Qichen
//Email:  heqichen(a)gaishi.vicp.net
//Website:  http://gaishi.vicp.net
//Date:  2011-5-2
#define FILTER_LEVEL  3
class Filter
{
  private:
    int buffer[FILTER_LEVEL];
  public:
    Filter()
    {
      int i;
      for (i=0; i<FILTER_LEVEL; ++i)
      {
        buffer[i] = 0;
      }
    }
    int filter(int value)
    {
      int i;
      int sum;
      for (i=0; i<FILTER_LEVEL-1; ++i)
      {
        buffer[i] = buffer[i+1];
      }
      buffer[FILTER_LEVEL-1] = value;
      sum = 0;
      for (i=0; i<FILTER_LEVEL; ++i)
      {
        sum += buffer[i];
      }
      return sum / FILTER_LEVEL;
    }
};
Servo testServo;
Filter xFilter, yFilter, zFilter;
void setup()
{
  Serial.begin(9600);
  testServo.attach(2);
}
void loop()
{
  int gx, gy, gz;
  gx = analogRead(A0);
  gy = analogRead(A1);
  gz = analogRead(A2);
  Serial.print("x: ");
  Serial.print(gx, DEC);
  Serial.print("  y: ");
  Serial.print(gy, DEC);
  Serial.print("  z: ");
  Serial.println(gz, DEC);
  int fgx, fgy, fgz;
  fgx = xFilter.filter(gx);
  fgy = yFilter.filter(gy);
  fgz = zFilter.filter(gz);
  Serial.print("  fx: ");
  Serial.print(fgx, DEC);
  Serial.print("  fy: ");
  Serial.print(fgy, DEC);
  Serial.print("  fz: ");
  Serial.println(fgz, DEC);
  testServo.write((fgz-100)/3);
  //delay(10);
}
]]>

Hacking Embedream Car

May 6th, 2011 § 0 comments § permalink

嵌入之梦-圆梦小车开发 May 1st, 2011

今天看到一台嵌入之梦的小车,但是上电之后发了疯似的乱跑,所以刷之。但新车间却没有网络,没办法,自己一点一点试。。结果如下

CT1	接受pwm,控制速度
CT2	前进控制信号,高电位转动
CT3	后退控制信号,高电位转动

但是由于小车上的UNO与我的Ubuntu连接有问题,貌似只有Windows是好的,Mac OS有时也会出问题。所以最后车上改用了Mega 1280。

但是又发现一个问题,就是Arduino使用USB供电的时候很正常,然而,使用车上接出来的5V电源时,程序就会混乱,完全没有一点规律。猜测可能是由于电机转动导致整个系统的电压下降,无法提供足够的电压给Arduino的板子上。这大概也是之前uno不会发疯的原因。没办法,在小车上再接一块9V层叠式电池,作为Arduino的电源。最后终于行了。

后面程序的作用是往前走,遇到前方有物体是后退,打弯,然后继续往前,一个简单的壁障程序。没有用到速度控制。下面就是这个小车最后的样子,手机拍的,将就看吧

Untitled

左侧照

Untitled

右侧照

Untitled

再来一张

Untitled http://v.youku.com/v_show/id_XMjYzMzY0NzA0.html

用到的程序就是下面的

//Author:	HE Qichen
//Email:	heqichen(a)gaishi.vicp.net
//Website:	http://gaishi.vicp.net
//Date:	2011-5-1
int status;
#define LEFT_SPEED   6
#define LEFT_FORWARD  7
#define LEFT_BACKWARD  8
#define RIGHT_SPEED  10
#define RIGHT_FORWARD  11
#define RIGHT_BACKWARD  12
#define ULTRASONIC_ECHO  3
#define ULTRASONIC_TRIG  4
#define NORMAL_SPEED  100
#define STOP_SPEED  0
void setup()
{
  Serial.begin(9600);
  setupMove();
  setupUltrasonic();
}
void loop()
{
  unsigned int d;
  moveForward();
  d = readDistance();
  Serial.println(d, DEC);
  if (d < 700)
  {
    moveBackward();
    delay(500);
    turnLeft();
    delay(200);
  }
}
void moveForward()
{
  analogWrite(LEFT_SPEED, NORMAL_SPEED);
  digitalWrite(LEFT_BACKWARD, LOW);
  digitalWrite(LEFT_FORWARD, HIGH);
  analogWrite(RIGHT_SPEED, NORMAL_SPEED);
  digitalWrite(RIGHT_BACKWARD, LOW);
  digitalWrite(RIGHT_FORWARD, HIGH);
}
void moveBackward()
{
  analogWrite(LEFT_SPEED, NORMAL_SPEED);
  digitalWrite(LEFT_BACKWARD, HIGH);
  digitalWrite(LEFT_FORWARD, LOW);
  analogWrite(RIGHT_SPEED, NORMAL_SPEED);
  digitalWrite(RIGHT_BACKWARD, HIGH);
  digitalWrite(RIGHT_FORWARD, LOW);
}
void turnLeft()
{
  analogWrite(LEFT_SPEED, NORMAL_SPEED);
  digitalWrite(LEFT_BACKWARD, HIGH);
  digitalWrite(LEFT_FORWARD, LOW);
  analogWrite(RIGHT_SPEED, NORMAL_SPEED);
  digitalWrite(RIGHT_BACKWARD, LOW);
  digitalWrite(RIGHT_FORWARD, HIGH);
}
void turnRight()
{
  analogWrite(LEFT_SPEED, NORMAL_SPEED);
  digitalWrite(LEFT_BACKWARD, LOW);
  digitalWrite(LEFT_FORWARD, HIGH);
  analogWrite(RIGHT_SPEED, NORMAL_SPEED);
  digitalWrite(RIGHT_BACKWARD, HIGH);
  digitalWrite(RIGHT_FORWARD, LOW);
}
void moveStop()
{
  analogWrite(LEFT_SPEED, STOP_SPEED);
  digitalWrite(LEFT_BACKWARD, LOW);
  digitalWrite(LEFT_FORWARD, LOW);
  analogWrite(RIGHT_SPEED, STOP_SPEED);
  digitalWrite(RIGHT_BACKWARD, LOW);
  digitalWrite(RIGHT_FORWARD, LOW);
}
void setupMove()
{
  pinMode(LEFT_SPEED, OUTPUT);
  pinMode(LEFT_FORWARD, OUTPUT);
  pinMode(LEFT_BACKWARD, OUTPUT);
  pinMode(RIGHT_SPEED, OUTPUT);
  pinMode(RIGHT_FORWARD, OUTPUT);
  pinMode(RIGHT_BACKWARD, OUTPUT);
  analogWrite(LEFT_SPEED, STOP_SPEED);
  digitalWrite(LEFT_FORWARD, LOW);
  digitalWrite(LEFT_BACKWARD, LOW);
  analogWrite(RIGHT_SPEED, STOP_SPEED);
  digitalWrite(RIGHT_FORWARD, LOW);
  digitalWrite(RIGHT_BACKWARD, LOW);
}
unsigned int readDistance()
{
  int duration;
  digitalWrite(ULTRASONIC_TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(ULTRASONIC_TRIG, HIGH);
  delayMicroseconds(5);
  digitalWrite(ULTRASONIC_TRIG, LOW);
  // The same pin is used to read the signal from the PING))): a HIGH
  // pulse whose duration is the time (in microseconds) from the sending
  // of the ping to the reception of its echo off of an object.
  duration = pulseIn(ULTRASONIC_ECHO, HIGH);
  return duration;
}
void  setupUltrasonic()
{
  pinMode(ULTRASONIC_TRIG, OUTPUT);
  pinMode(ULTRASONIC_ECHO, INPUT);
  digitalWrite(ULTRASONIC_TRIG, LOW);
}
]]>

[GGHC] XinCheJian coming out of the depths of video streaming from Android!

April 30th, 2011 § 0 comments § permalink

Ricky just make an update on his quest to streaming video from Android.

element14: XinCheJian GGHC: XinCheJian coming out of the depths of video streaming from Android!: “”

]]>

Where Am I?

You are currently browsing the robot category at 新车间 [XinCheJian].