这周要实现的内容:
1. 底盘ROS标准化, 目前先实现底盘部分VCP控制, ROSSerial通讯, 电机控制器的精细化操作.
2. Joule平台ROS标准化, 参考Kinetic标准框架搭建.
3. 实现蓝牙键盘控制底盘部分的行走.
点击(此处)折叠或打开
- 
				//新建工作目录.
 
- 
				mkdir -p /work/BigRobot/src
 
- 
				cd /work/BigRobot/src
 
- 
				catkin_init_workspace 
 
- 
				cd /work/BigRobot
 
- catkin_make
点击(此处)折叠或打开
- 
				#编辑 ~/.bashrc
 
- 
				source /opt/ros/kinetic/setup.bash
 
- 
				source /work/BigRobot/devel/setup.bash
 
- 
				
 
- 
				alias gw='cd /work/BigRobot'
 
- 
				alias gs='cd /work/BigRobot/src'
 
- 
				alias gm='cd /work/BigRobot && catkin_make'
 
- 
				
 
- export GIT_SSL_NO_VERIFY=1
=========================================================
首先创建 big机器人 中各个功能节点 相互通讯 所需要的 交互接口 功能包
点击(此处)折叠或打开
- 
				gs
 
- catkin_create_pkg big_msgs message_generation std_msgs roscpp
查看turtlebot3的规则, 一般对应的功能包目录包括的内容
点击(此处)折叠或打开
- 
				src/include : 源码目录, CPP或者Python脚本, catkin_create_pkg时自动生成, 需手动添加内容.
 
- 
				srv: 服务文件 *.srv
 
- 
				msg: 消息文件 *.msg
 
- 
				param: 参数文件 *.yaml
 
- 
				action: 动作文件 *.action
 
- launch: *.launch文件
- 
				CMakeLists.txt : catkin_create_pkg时自动生成, 需手动改写.
 
- package.xml: catkin_create_pkg时自动生成, 需手动改写.
元功能包是具有共同目的的功能包的集合体, 目前考虑把 接口测试/单元测试, 应用测试, 发布环境等明确目录管理, 权做为元功能包的概念.
点击(此处)折叠或打开
- 
				当前的使用键盘进行控制行走为一个测试单元, 此时建立一个测试目录统一管理后期的测试程序
 
- 
				
 
- 
				gs
 
- 
				mkdir test_units
 
- 
				cd test_units
 
- 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 #发现能传递一些东西了, 剩下就是调数据了.
点击(此处)折叠或打开
- 
				########################################
 
- 
				# GlobalStaticConfig.yaml  底盘全局参数
 
- 
				########################################
 
- 
				# 底盘半径宽度 meter
 
- 
				ROBOT_RADIUS: 0.220
 
- 
				# 底盘轮子 半径 meter
 
- 
				WHEEL_RADIUS: 0.033
 
- 
				# 底盘两个差动轮的轴距
 
- 
				WHEEL_BASE: 0.287
 
- 
				#转弯半径, 轴距的一半?
 
- 
				TURNING_RADIUS: 0.1435
 
- 
				# 编码器最大最小值. 就是 int32的最值
 
- 
				ENCODER_MAX: 2147483647
 
- 
				#最大线速度 77是rpm, 单位 m/s 
 
- 
				#double MAX_LINEAR_VELOCITY = (WHEEL_RADIUS * 2 * 3.14159265359 * 77 / 60) 
 
- 
				#double MIN_LINEAR_VELOCITY = -MAX_LINEAR_VELOCITY 
 
- 
				#最大角速度 单位 rad/s
 
- 
				#double MAX_ANGULAR_VELOCITY = (MAX_LINEAR_VELOCITY / TURNING_RADIUS) 
 
- #double MIN_ANGULAR_VELOCITY = -MAX_ANGULAR_VELOCITY
