資料介紹
描述
?
在這篇文章中,我們將使用 ROS Melodic 與 Bittle 執(zhí)行遠(yuǎn)程操作 - 來(lái)自 Petoi 的機(jī)器狗,目前在 Kickstarter 上。

即使您不打算購(gòu)買(mǎi) Bittle,如果您正在尋找有關(guān)如何為 ROS 編寫(xiě)自定義驅(qū)動(dòng)程序以與機(jī)器人硬件交互并控制機(jī)器人運(yùn)動(dòng)的信息,本文仍然可能對(duì)您有用。我們先談?wù)?/font>選項(xiàng)一。

Bittle 已經(jīng)有一個(gè)負(fù)責(zé)運(yùn)動(dòng)和平衡的微控制器 - ATMega328。

可以使用 ros_arduino_bridge 包直接在微控制器芯片上運(yùn)行 ROS 節(jié)點(diǎn),但是這種方法有一些缺點(diǎn)。首先,ATMega328 上剩余的內(nèi)存量可能不足以同時(shí)穩(wěn)定運(yùn)行運(yùn)動(dòng)算法和 ROS 節(jié)點(diǎn)。其次,ATMega328沒(méi)有無(wú)線接口或圖像處理能力,所以無(wú)論如何我們都需要將它與單板計(jì)算機(jī)耦合以進(jìn)行遠(yuǎn)程操作。
這將我們帶到了選項(xiàng) 2 。

。簡(jiǎn)而言之,這就是它的工作方式。現(xiàn)在讓我們來(lái)看看細(xì)節(jié)。
有兩種 SBC 推薦用于 Bittle - Raspberry Pi 3A+ 或 Raspberry Pi Zero。Raspberry Pi 4 和 3B+ 是兼容的,但尺寸尺寸對(duì)于 Bittle 緊湊的機(jī)身來(lái)說(shuō)太大了。我們將在這個(gè)項(xiàng)目中使用 Raspberry Pi 3A+ - 它非常適合 NyBoard。

。

原因是這些接頭具有用于 TX/RX 引腳的電平轉(zhuǎn)換器 - Raspberry Pi 在 UART 接口上具有 3.3V,而 Arduino 板通常具有 5V。
現(xiàn)在,當(dāng)我們有硬件連接和 Raspbian 與 ROS 時(shí),我們需要為機(jī)器人編寫(xiě)一個(gè)自定義驅(qū)動(dòng)程序。
安裝 catkin 構(gòu)建工具,創(chuàng)建一個(gè) catkin 工作空間并將我的 GitHub 存儲(chǔ)庫(kù)為此項(xiàng)目克隆到 src 文件夾中。
sudo pip install -U catkin_tools
!確保從您的 catkin 工作區(qū) src 文件夾中執(zhí)行以下命令!
git clone https://github.com/AIWintermuteAI/bittle_ROS.git
移回 catkin 工作區(qū)文件夾并構(gòu)建您剛剛從 Gtihub 克隆的包
catkin build
讓我們看一下存儲(chǔ)庫(kù)內(nèi)容。與 NyBoard 交互的驅(qū)動(dòng)程序位于 scripts 文件夾中。它是一個(gè)簡(jiǎn)單的節(jié)點(diǎn),訂閱了關(guān)于 cmd_vel 主題的 Twist 消息。
def __init__(self, port='/dev/ttyS0'):
self.dir = 0
rospy.init_node('cmd_vel_listener')
rospy.Subscriber("/cmd_vel", Twist, self.callback)
self.ser = serial.Serial(
port=port,
baudrate=57600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
Twist 消息中有 6 個(gè)分量 - 3 軸的線速度和角速度。
rospy.loginfo("Received a /cmd_vel message!")
rospy.loginfo("Linear Components: [%f, %f, %f]"%(msg.linear.x, msg.linear.y, msg.linear.z))
rospy.loginfo("Angular Components: [%f, %f, %f]"%(msg.angular.x, msg.angular.y, msg.angular.z))
在我們的例子中,我們只關(guān)心線性 x 速度(向前和向后)和角 z 速度(左和右)。收到消息后,我們使用 PySerial 使用內(nèi)置通信 API 與 BIttle 進(jìn)行通信。
if msg.linear.x > 0:
dir = 1
elif msg.linear.x < 0:
dir = -1
elif msg.angular.z > 0:
dir = 2
elif msg.angular.z < 0:
dir = 3
else:
dir = 0
if self.dir != dir:
self.wrapper([dir_dict[dir],0])
self.dir = dir
為了簡(jiǎn)單起見(jiàn),我們將只啟用基本的步行 - 可以通過(guò)串行直接將伺服角度發(fā)送到微控制器,但在這種情況下,陀螺儀和加速度計(jì)將不會(huì)用于平衡。

帶有陀螺儀/加速度計(jì)平衡的細(xì)粒度伺服角度控制并不容易,但由于 BIttle 軟件是開(kāi)源的,并且未來(lái)將發(fā)布 ESP32 控制器板(能夠運(yùn)行 ROS 節(jié)點(diǎn)和運(yùn)動(dòng)協(xié)調(diào)算法),我認(rèn)為這是可以實(shí)現(xiàn)的。這將大大提高 Bittle 穿越各種障礙的能力。
在存儲(chǔ)庫(kù)文件夾中,您還將找到兩個(gè)啟動(dòng)文件 bittle_teleop_robot.launch 和 bittle_teleop_server.launch。啟動(dòng)文件在 ROS 中用于方便地啟動(dòng)大型機(jī)器人設(shè)置。Teleop 啟動(dòng)文件機(jī)器人將同時(shí)啟動(dòng)機(jī)器人驅(qū)動(dòng)程序和 USB 攝像頭驅(qū)動(dòng)程序。要在您的 Ubuntu 計(jì)算機(jī)上執(zhí)行的服務(wù)器啟動(dòng)文件將啟動(dòng) rqt_robot_steering 和 RVIZ,并打開(kāi)圖像視圖。
通過(guò)在 Ubuntu 計(jì)算機(jī)和 Raspberry Pi 上導(dǎo)出 ROS_MASTER_URI 和 ROS_IP 環(huán)境變量,將 ROS 設(shè)置為在多臺(tái)機(jī)器上工作。
在您的 Ubuntu 計(jì)算機(jī)上:
export ROS_MASTER_URI=http://[your-ubuntu-computer-ip-here]
export ROS_IP=[your-ubuntu-computer-ip-here]
在樹(shù)莓派上:
export ROS_MASTER_URI=http://[your-ubuntu-computer-ip-here]
export ROS_IP=[your-raspberry-pi-ip-here]
ROS_MASTER_URI 將指向您的 Ubuntu 計(jì)算機(jī),該計(jì)算機(jī)將運(yùn)行 roscore,并且 ROS_IP 需要設(shè)置為同一網(wǎng)絡(luò)上機(jī)器各自的 IP 地址。
請(qǐng)記住獲取您的 catkin 工作區(qū)并將 pi 用戶添加到 dialout 和 tty 組 - 這是 PySerial 能夠打開(kāi)串行連接所必需的。由于 ROS Melodic 默認(rèn)仍使用 Python 2.7,并且驅(qū)動(dòng)程序腳本配置為使用您的系統(tǒng) Python 3,因此您可能會(huì)收到導(dǎo)入錯(cuò)誤 - 在這種情況下,請(qǐng)使用 pip install 安裝必要的包。通常只需要安裝 rospkg:
pip install rospkg
完成后,在 Ubuntu 計(jì)算機(jī)上啟動(dòng) bittle_teleop_server.launch,然后在 Raspberry Pi 上啟動(dòng) bittle_teleop_robot.launch。
移動(dòng)滑塊讓機(jī)器人移動(dòng)!如果您使用的機(jī)器人與 Bittle 不同,則在接收到速度消息后要執(zhí)行的確切代碼需要與您的設(shè)置相匹配,尤其是在接收到速度消息后的這部分
if msg.linear.x > 0:
dir = 1
elif msg.linear.x < 0:
dir = -1
elif msg.angular.z > 0:
dir = 2
elif msg.angular.z < 0:
dir = 3
else:
dir = 0
if self.dir != dir:
self.wrapper([dir_dict[dir],0])
self.dir = dir
距離 Kickstarter 活動(dòng)結(jié)束還有時(shí)間,所以看看 Bittle 以及它在項(xiàng)目 Kickstarter 主頁(yè)上的功能。如果您打算將 Bittle 與 ROS 一起用于更高級(jí)的機(jī)器人項(xiàng)目,請(qǐng)考慮支持BiBoard V0 ,它具有更強(qiáng)大的控制芯片、具有 520 Kb RAM 和 16 Mb ROM 的 ESP32。

希望本文對(duì)您了解更多有關(guān) ROS 機(jī)器人驅(qū)動(dòng)程序的信息有所幫助。
如果您有任何問(wèn)題,請(qǐng)?jiān)贚inkedIn上添加我,并訂閱我的 YouTube 頻道,以獲得有關(guān)機(jī)器學(xué)習(xí)和機(jī)器人技術(shù)的更多有趣項(xiàng)目的通知。
- 使用Raspberry PI和open CV進(jìn)行圖像處理
- 使用Raspberry Pi和BluPants進(jìn)行編碼
- 通過(guò)USB對(duì)Raspberry Pi進(jìn)行編程
- Arduino和Raspberry Pi平臺(tái)進(jìn)行編碼
- 使用Raspberry Pi的Sphero RVR低延遲遠(yuǎn)程操作
- 使用Raspberry Pi進(jìn)行汽車(chē)診斷
- 遠(yuǎn)程編程Raspberry Pi Pico
- 使用Bittle和Raspberry Pi 4的ROS SLAM
- Raspberry Pi和你的倉(cāng)鼠進(jìn)行股市交易
- 使用Raspberry Pi和Arduino進(jìn)行花卉監(jiān)測(cè)
- 可視頻直播的Raspberry Pi網(wǎng)絡(luò)控制機(jī)器人 14次下載
- 《愛(ài)上Raspberry Pi》中譯版-電子書(shū)籍.pdf 0次下載
- Instant Raspberry Pi Gaming 6次下載
- Raspberry_Pi詳解 16次下載
- raspberry_pi各版本差別 0次下載
- 基于Raspberry Pi 5的蜂窩物聯(lián)網(wǎng)項(xiàng)目 1312次閱讀
- 使用Raspberry Pi Pico W和MicroPython開(kāi)發(fā)物聯(lián)網(wǎng)應(yīng)用 2180次閱讀
- 用于測(cè)試項(xiàng)目的4個(gè)最佳樹(shù)莓派Raspberry Pi模擬器 6823次閱讀
- 如何使用Raspberry Pi使熱水浴缸變得智能和遠(yuǎn)程操作 1985次閱讀
- 如何通過(guò)Raspberry Pi設(shè)置CE電流監(jiān)視器 2342次閱讀
- 基于樹(shù)莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點(diǎn) 2984次閱讀
- 基于Raspberry Pi Pico開(kāi)發(fā)先進(jìn)的家庭自動(dòng)化系統(tǒng) 3004次閱讀
- 基于FONA通過(guò)UART與Raspberry Pi進(jìn)行通訊的方案介紹 2257次閱讀
- 微雪電子ZeroW| Raspberry Pi ZeroW主板簡(jiǎn)介 2618次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡(jiǎn)介 3145次閱讀
- 微雪電子Raspberry Pi 3 Model擴(kuò)展板簡(jiǎn)介 1667次閱讀
- 利用Raspberry Pi構(gòu)建存儲(chǔ)和虛擬化時(shí)間序列數(shù)據(jù) 952次閱讀
- 一文了解Raspberry Pi 4各項(xiàng)性能跑分 3w次閱讀
- ROS程序是如何控制伺服機(jī)的 所有答案盡在本文 3148次閱讀
- 視覺(jué)享受!用Raspberry Pi實(shí)現(xiàn)圣誕樹(shù)燈光秀 8344次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開(kāi)發(fā)包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎(chǔ)模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開(kāi)發(fā)板資料
- 34.89 MB | 1次下載 | 免費(fèi)
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊(cè)
- 3.32 MB | 1次下載 | 免費(fèi)
- 8聯(lián)想A820t手機(jī)維修圖紙包括主板原理圖 尾板原理圖 點(diǎn)位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產(chǎn)業(yè)鏈分析
- 4.43 MB | 383次下載 | 免費(fèi)
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說(shuō)明
- 0.50 MB | 94次下載 | 1 積分
- 4長(zhǎng)虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強(qiáng)型場(chǎng)效應(yīng)晶體管的數(shù)據(jù)手冊(cè)
- 0.11 MB | 28次下載 | 2 積分
- 8長(zhǎng)虹液晶彩電LS29機(jī)芯的技術(shù)資料說(shuō)明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191388次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論