前陣子藉着比賽搭了一整套機器人系統,系統全開源環境,搭配如下
ubuntu_ros+solidworks+ubuntu_raspberryPi3+arduino_mega
ubuntu_ros
基本框架在ROS上完成,raspberryPi3和arduino兼容,可以利用開源框架自己編寫整體的系統程序。
具體塊程序在GITHUB上
solidworks
主要是利用soliworks的插件導出URDF模型文件給ROS的rviz用,具體的導出教程參考https://www.cnblogs.com/21207-iHome/p/7821269.html
根據上面的方法就可以導出來,導出來的主要問題就是建立的座標變換的關係,要設定參考軸和參考座標系,這和設計的機械結構有一點關係,有時候設計有問題導出來的模型座標關係需要修改。如何正確設定參考軸和座標系看上面的網址。
ubuntu_raspberryPi3
在前期開源臺上利用遠程控制方式,用電腦SSH方式遠程控制raspberryPi3,SSH遠程通信需要設置WIFI路由配置,安裝SSH這裏就不說了,google一下就有命令安裝
兩臺都要配置
SSH通信需要配置文件
1.首先保證IP地址恆定,設置靜態IP
sudo vim /etc/network/interfaces
#在文件末尾加上
auto wlp9s0 #ifconfig查看WLAN名稱,UBUNTU16後變成這樣了,以前的不會這麼奇怪
iface wlp9s0 inet static #靜態
address 192.168.1.114 #IP值
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 121.14.136.214 #DNS服務器地址可改,按需
然後ssh調試一下
ssh ubuntu@pi
ubuntu是遠程raspberryPi3的用戶名,pi是IP地址,我在
sudo vim /etc/hosts
裏面設置了ip地址變量替換
能登錄調通後設置
sudo vim ~/.barshrc
#在文件末端加入設置的主從機設置
export ROS_HOSTNAME=ly
#export ROS_HOSTNAME=lylab
#export ROS_MASTER_URI='http://pi:11311'
export ROS_MASTER_URI='http://ly:11311'
#這是電腦端的,電腦端是從機
export ROS_HOSTNAME=pi
export ROS_MASTER_URI='http://pi:11311'
#這是pi端的,pi端是主機
pi端roscore後能在電腦端rosrun個東西就說明成功
arduino_mega
前期爲了方便是直接電泳rosserial_python包,把arduino當成一個ros節點來使用,這樣的好處上根據arduino基礎和ros基礎就能快速寫出一個能用的機器人真實系統(賊快)https://blog.csdn.net/qq_27806947/article/category/8105351
缺點就是它把arduino當成了一個節點,這個節點需要不斷的掃和pi通信的緩存看有沒有話題消息發下來,相當的佔內存,可以所示真的就把它當成節點了,沒有其他自主功能。
後期可以考慮用通信的方式發送驅動命令,這樣優勢是快,佔內存比上面的方法少一點。具體可以參考(還沒有去實現,控制的東西數量和傳感器不一樣)https://blog.csdn.net/jialing678/article/details/85921834
機器人系統的代碼上GITHUB
實際調用命令
前提是把文件寫入arduino和pi裏面
1.pi端
roscore#終端1
rosrun rosserial_python serial_node.py /dev/ttyACM0 #終端2
#串口號根據自己的改
2.電腦端
rosrun needle turtlebot_teleop_key #終端1
rosrun needle turtlebot_teleop_key1 #終端2
roslaunch needle display.launch #終端3
#實現表現:仿真和實際可以同時運動