本帖最后由 Gorgon_Meducer 于 2014-10-28 12:01 编辑
- 2014-10-28 致歉
由于我个人在团队管理实践上的重大错误,V2版蜘蛛可靠性不足以完成今日举行的产品展示,最终影响了飞思卡尔产品
的展示计划。在这里,我真心的向阿莫致歉,向相信我,期待蜘蛛项目的广大坛友致歉,向飞思卡尔(上海)致歉。
我们认识到自己能力的不足,后续将继续在硬件驱动能力上进行改进,降低机器人对电源系统的依赖。
特此致歉:王卓然(傻孩子)
P.S 此次飞思卡尔展会将使用蜘蛛V1进行演示。
- 2014-10-23 V2版蜘蛛改进
a. 由于驱动电路考虑不足,发现蜘蛛在joints_calibration()时由于所有的关节顺势运动时电流过大会导致驱动电路保护,
导致很多时候无法正常工作。显然现在修改驱动电路已经来不及了,只能修改代码,让所有关节顺次启动,从而避免
峰值电流。
- static void joints_calibration(joint_t *ptJoints, joint_no_t tIndex)
- {
- if (NULL == ptJoints) {
- return ;
- }
- switch (tIndex) {
- case RIGHT_BACK_LEG_0:
- JOINT_CFG(
- ptJoints[RIGHT_BACK_LEG_0],
- RIGHT_BACK_LEG_0,
- 70, //!< offset
- 110, //!< start angle
- 200, //!< end angle
- 270, //!< Max Angular Speed
- 225, //!< Reset Position
- );break;
- case RIGHT_MIDDLE_LEG_0:
- JOINT_CFG(
- ptJoints[RIGHT_MIDDLE_LEG_0],
- RIGHT_MIDDLE_LEG_0,
- 54, //!< offset
- 81, //!< start angle
- 171, //!< end angle
- 270, //!< Max Angular Speed
- 180, //!< Reset Position
- );break;
- case RIGHT_FRONT_LEG_0:
- JOINT_CFG(
- ptJoints[RIGHT_FRONT_LEG_0],
- RIGHT_FRONT_LEG_0,
- 50, //!< offset
- 40, //!< start angle
- 130, //!< end angle
- 270, //!< Max Angular Speed
- 135, //!< Reset Position
- );break;
- case LEFT_FRONT_LEG_0:
- JOINT_CFG(
- ptJoints[LEFT_FRONT_LEG_0],
- LEFT_FRONT_LEG_0,
- 220, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 45, //!< Reset Position
- );break;
- case LEFT_MIDDLE_LEG_0:
- JOINT_CFG(
- ptJoints[LEFT_MIDDLE_LEG_0],
- LEFT_MIDDLE_LEG_0,
- 215, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 0, //!< Reset Position
- );break;
- case LEFT_BACK_LEG_0:
- JOINT_CFG(
- ptJoints[LEFT_BACK_LEG_0],
- LEFT_BACK_LEG_0,
- 195, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 315, //!< Reset Position
- );break;
- case RIGHT_BACK_LEG_1:
- JOINT_CFG(
- ptJoints[RIGHT_BACK_LEG_1],
- RIGHT_BACK_LEG_1,
- 35, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 225, //!< Reset Position
- );break;
- case RIGHT_MIDDLE_LEG_1:
- JOINT_CFG(
- ptJoints[RIGHT_MIDDLE_LEG_1],
- RIGHT_MIDDLE_LEG_1,
- 40, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 225, //!< Reset Position
- );break;
- case RIGHT_FRONT_LEG_1:
- JOINT_CFG(
- ptJoints[RIGHT_FRONT_LEG_1],
- RIGHT_FRONT_LEG_1,
- 33, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 225, //!< Reset Position
- );break;
-
- case LEFT_BACK_LEG_1:
- JOINT_CFG(
- ptJoints[LEFT_BACK_LEG_1],
- LEFT_BACK_LEG_1,
- 235, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 315, //!< Reset Position
- );break;
- case LEFT_MIDDLE_LEG_1:
- JOINT_CFG(
- ptJoints[LEFT_MIDDLE_LEG_1],
- LEFT_MIDDLE_LEG_1,
- 240, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 315, //!< Reset Position
- );break;
- case LEFT_FRONT_LEG_1:
- JOINT_CFG(
- ptJoints[LEFT_FRONT_LEG_1],
- LEFT_FRONT_LEG_1,
- 245, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 315, //!< Reset Position
- );break;
- case LEFT_BACK_LEG_2:
- JOINT_CFG(
- ptJoints[LEFT_BACK_LEG_2],
- LEFT_BACK_LEG_2,
- 328, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 45, //!< Reset Position
- );break;
- case LEFT_MIDDLE_LEG_2:
- JOINT_CFG(
- ptJoints[LEFT_MIDDLE_LEG_2],
- LEFT_MIDDLE_LEG_2,
- 332, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 45, //!< Reset Position
- );break;
- case LEFT_FRONT_LEG_2:
- JOINT_CFG(
- ptJoints[LEFT_FRONT_LEG_2],
- LEFT_FRONT_LEG_2,
- 323, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 45, //!< Reset Position
- );break;
- case RIGHT_BACK_LEG_2:
- JOINT_CFG(
- ptJoints[RIGHT_BACK_LEG_2],
- RIGHT_BACK_LEG_2,
- 312, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 135, //!< Reset Position
- );break;
- case RIGHT_MIDDLE_LEG_2:
- JOINT_CFG(
- ptJoints[RIGHT_MIDDLE_LEG_2],
- RIGHT_MIDDLE_LEG_2,
- 311, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 135, //!< Reset Position
- );break;
- case RIGHT_FRONT_LEG_2:
- JOINT_CFG(
- ptJoints[RIGHT_FRONT_LEG_2],
- RIGHT_FRONT_LEG_2,
- 312, //!< offset
- 0, //!< start angle
- 270, //!< end angle
- 270, //!< Max Angular Speed
- 135, //!< Reset Position
- );break;
- }
- }
- ...
- IMPLEMENT_FSM(SpiderTask)
- NO_INIT static uint8_t s_hwJointsCount;
- PRIVATE STATE(Spider_Init) BEGIN
- s_hwJointsCount = CEREBEL_JOINTS_COUNT;
- //! initialize servo service
- SERVO.Init ();
- SERVO.Start ();
-
- CS_SET_EVENT(&s_wDelayEvent);
-
- TRANSFER_TO_STATE(Spider_Joints_Init);
- EXIT_STATE;
- END
- PRIVATE STATE(Spider_Joints_Init) WAIT_EVENT_BEGIN(&s_wDelayEvent)
-
- if (s_hwJointsCount) {
- request_for_delay_ms(250);
- joints_calibration(s_tJoints, s_hwJointsCount - 1);
- s_hwJointsCount--;
- } else {
- //! initialize cerebel layer
- CEREBEL_CFG(&s_tJoints);
- TRANSFER_TO_STATE(Spider_Task);
- }
- REFLEXIVE_STATE;
- END
- PRIVATE STATE(Spider_Task) BEGIN
- CALL_ACTION(Spider_Go_Front);
- REFLEXIVE_STATE;
- END
- END_IMPLEMENT_FSM
复制代码
b. 增加一个异步的毫秒级精确延时服务,主要是前面关节初始化的时候需要在每个关节之间插入非阻塞的延时。
这也展示了状态机架构下如何配合调度器实现任务和时间的同步(应用代码参考a):
- NO_INIT static event_t s_wDelayEvent;
- static volatile uint32_t s_wDelayCounter = 0;
- void request_for_delay_ms(uint32_t wDelayMs)
- {
- SAFE_ATOM_CODE(
- s_wDelayCounter = wDelayMs;
- )
- }
- ISR(SysTick_Handler)
- {
- ...
- if (s_wDelayCounter) {
- s_wDelayCounter--;
- if (!s_wDelayCounter) {
- CS_SET_EVENT(&s_wDelayEvent);
- }
- }
- ...
- }
复制代码
c. v1.2工程模板下载
SpiderRobot_Template(v1.2).rar
(1.17 MB, 下载次数: 257)
2014-10-27 11:04 上传
点击文件名下载附件
- 2014-10-23 凌晨 V2版蜘蛛初步完成
历经磨难,原本以为很容易搞定的新版蜘蛛机器人,总算是搞定了——上视频:
V41023-025542.part1.rar
(15 MB, 下载次数: 886)
2014-10-23 03:09 上传
点击文件名下载附件
V41023-025542.part2.rar
(15 MB, 下载次数: 843)
2014-10-23 03:10 上传
点击文件名下载附件
V41023-025542.part3.rar
(3.22 MB, 下载次数: 528)
2014-10-23 03:10 上传
点击文件名下载附件
数字舵机是0~270度的,非常精准,校准只需要处理offset即可。另外由于安装的原因,坐标系又被迫做了镜像,
回头软件上考虑加入处理,避免这种坐标系上的差异存在。
睡了,好困,其它内容明天再补充。
工程下载
SpiderRobot_Template(v1.1).rar
(551.88 KB, 下载次数: 343)
2014-10-23 03:12 上传
点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
适当可以用__inline~~~~在我读过的代码中,我觉得UCOS的代码是非常优美的~十分清晰有条理~而且代码整整齐齐~看得十分舒服~~一读就懂~~
一周热门 更多>