猪事大吉 - ROS 学习 - BigRobot - 第一日 - 手动控制部分

1740阅读 0评论2019-02-11 iibull
分类:其他平台

猪年春节就这么过了, 家里的三个女人都瘦了很多, 不过低开高走, 猪事大吉.

这周要实现的内容:
1. 底盘ROS标准化, 目前先实现底盘部分VCP控制, ROSSerial通讯, 电机控制器的精细化操作.
2. Joule平台ROS标准化, 参考Kinetic标准框架搭建.
3. 实现蓝牙键盘控制底盘部分的行走.

点击(此处)折叠或打开

  1. //新建工作目录.
  2. mkdir -p /work/BigRobot/src
  3. cd /work/BigRobot/src
  4. catkin_init_workspace
  5. cd /work/BigRobot
  6. catkin_make
规范化自己工作空间的快捷键

点击(此处)折叠或打开

  1. #编辑 ~/.bashrc
  2. source /opt/ros/kinetic/setup.bash
  3. source /work/BigRobot/devel/setup.bash

  4. alias gw='cd /work/BigRobot'
  5. alias gs='cd /work/BigRobot/src'
  6. alias gm='cd /work/BigRobot && catkin_make'

  7. export GIT_SSL_NO_VERIFY=1
这样通过 gw/gs/gm等即可快速的进行ROS工作空间切换和编译

=========================================================
首先创建 big机器人 中各个功能节点 相互通讯 所需要的 交互接口 功能包

点击(此处)折叠或打开

  1. gs
  2. catkin_create_pkg big_msgs message_generation std_msgs roscpp
则创建了 功能包 big_msgs, 此目录用于规划各个功能节点之间的通讯接口以便于统一管理.
查看turtlebot3的规则, 一般对应的功能包目录包括的内容

点击(此处)折叠或打开

  1. src/include : 源码目录, CPP或者Python脚本, catkin_create_pkg时自动生成, 需手动添加内容.
  2. srv: 服务文件 *.srv
  3. msg: 消息文件 *.msg
  4. param: 参数文件 *.yaml
  5. action: 动作文件 *.action
  6. launch: *.launch文件
  7. CMakeLists.txt : catkin_create_pkg时自动生成, 需手动改写.
  8. package.xml: catkin_create_pkg时自动生成, 需手动改写.
=========================================================

元功能包是具有共同目的的功能包的集合体, 目前考虑把 接口测试/单元测试, 应用测试, 发布环境等明确目录管理, 权做为元功能包的概念.

点击(此处)折叠或打开

  1. 当前的使用键盘进行控制行走为一个测试单元, 此时建立一个测试目录统一管理后期的测试程序

  2. gs
  3. mkdir test_units
  4. cd test_units
  5. catkin_create_pkg remote_control_by_keyboard message_generation std_msgs roscpp

编辑完代码 机器人底盘 通过 VCP USB 接入到 Joule, 被Joule识别为 ttyACM0.
在 ROS端执行.
roscore
sudo chmod a+rwx /dev/ttyACM0; rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 #_baud:=115200 (CDC设置波特率没有什么意义)
rosparam load ./src/big_msgs/param/GlobalStaticConfig.yaml # 加载机器人配置信息.
rosrun remote_control_by_keyboard remote_control_by_keyboard_node  #发现能传递一些东西了, 剩下就是调数据了.


点击(此处)折叠或打开

  1. ########################################
  2. # GlobalStaticConfig.yaml  底盘全局参数
  3. ########################################
  4. # 底盘半径宽度 meter
  5. ROBOT_RADIUS: 0.220
  6. # 底盘轮子 半径 meter
  7. WHEEL_RADIUS: 0.033
  8. # 底盘两个差动轮的轴距
  9. WHEEL_BASE: 0.287
  10. #转弯半径, 轴距的一半?
  11. TURNING_RADIUS: 0.1435
  12. # 编码器最大最小值. 就是 int32的最值
  13. ENCODER_MAX: 2147483647
  14. #最大线速度 77是rpm, 单位 m/s
  15. #double MAX_LINEAR_VELOCITY = (WHEEL_RADIUS * 2 * 3.14159265359 * 77 / 60)
  16. #double MIN_LINEAR_VELOCITY = -MAX_LINEAR_VELOCITY
  17. #最大角速度 单位 rad/s
  18. #double MAX_ANGULAR_VELOCITY = (MAX_LINEAR_VELOCITY / TURNING_RADIUS)
  19. #double MIN_ANGULAR_VELOCITY = -MAX_ANGULAR_VELOCITY





上一篇:UWB 室内定位算法
下一篇:Intel Joule Ubuntu16.04 修改的内容