資料介紹
描述
?
在這篇文章中,我們將使用 ROS Melodic 與 Bittle 執行遠程操作 - 來自 Petoi 的機器狗,目前在 Kickstarter 上。

即使您不打算購買 Bittle,如果您正在尋找有關如何為 ROS 編寫自定義驅動程序以與機器人硬件交互并控制機器人運動的信息,本文仍然可能對您有用。我們先談談選項一。

Bittle 已經有一個負責運動和平衡的微控制器 - ATMega328。

可以使用 ros_arduino_bridge 包直接在微控制器芯片上運行 ROS 節點,但是這種方法有一些缺點。首先,ATMega328 上剩余的內存量可能不足以同時穩定運行運動算法和 ROS 節點。其次,ATMega328沒有無線接口或圖像處理能力,所以無論如何我們都需要將它與單板計算機耦合以進行遠程操作。
這將我們帶到了選項 2 。

。簡而言之,這就是它的工作方式。現在讓我們來看看細節。
有兩種 SBC 推薦用于 Bittle - Raspberry Pi 3A+ 或 Raspberry Pi Zero。Raspberry Pi 4 和 3B+ 是兼容的,但尺寸尺寸對于 Bittle 緊湊的機身來說太大了。我們將在這個項目中使用 Raspberry Pi 3A+ - 它非常適合 NyBoard。

。

原因是這些接頭具有用于 TX/RX 引腳的電平轉換器 - Raspberry Pi 在 UART 接口上具有 3.3V,而 Arduino 板通常具有 5V。
現在,當我們有硬件連接和 Raspbian 與 ROS 時,我們需要為機器人編寫一個自定義驅動程序。
安裝 catkin 構建工具,創建一個 catkin 工作空間并將我的 GitHub 存儲庫為此項目克隆到 src 文件夾中。
sudo pip install -U catkin_tools
!確保從您的 catkin 工作區 src 文件夾中執行以下命令!
git clone https://github.com/AIWintermuteAI/bittle_ROS.git
移回 catkin 工作區文件夾并構建您剛剛從 Gtihub 克隆的包
catkin build
讓我們看一下存儲庫內容。與 NyBoard 交互的驅動程序位于 scripts 文件夾中。它是一個簡單的節點,訂閱了關于 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 個分量 - 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))
在我們的例子中,我們只關心線性 x 速度(向前和向后)和角 z 速度(左和右)。收到消息后,我們使用 PySerial 使用內置通信 API 與 BIttle 進行通信。
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
為了簡單起見,我們將只啟用基本的步行 - 可以通過串行直接將伺服角度發送到微控制器,但在這種情況下,陀螺儀和加速度計將不會用于平衡。

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

希望本文對您了解更多有關 ROS 機器人驅動程序的信息有所幫助。
如果您有任何問題,請在LinkedIn上添加我,并訂閱我的 YouTube 頻道,以獲得有關機器學習和機器人技術的更多有趣項目的通知。
- 使用Raspberry PI和open CV進行圖像處理
- 使用Raspberry Pi和BluPants進行編碼
- 通過USB對Raspberry Pi進行編程
- Arduino和Raspberry Pi平臺進行編碼
- 使用Raspberry Pi的Sphero RVR低延遲遠程操作
- 使用Raspberry Pi進行汽車診斷
- 遠程編程Raspberry Pi Pico
- 使用Bittle和Raspberry Pi 4的ROS SLAM
- Raspberry Pi和你的倉鼠進行股市交易
- 使用Raspberry Pi和Arduino進行花卉監測
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- Instant Raspberry Pi Gaming 6次下載
- Raspberry_Pi詳解 16次下載
- raspberry_pi各版本差別 0次下載
- 愛上Raspberry Pi 0次下載
- 基于Raspberry Pi 5的蜂窩物聯網項目 2.3k次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發物聯網應用 3.4k次閱讀
- 用于測試項目的4個最佳樹莓派Raspberry Pi模擬器 8.2k次閱讀
- 如何使用Raspberry Pi使熱水浴缸變得智能和遠程操作 2.8k次閱讀
- 如何通過Raspberry Pi設置CE電流監視器 3.3k次閱讀
- 基于樹莓派產品 Raspberry Pi微控制器板的優缺點 3.6k次閱讀
- 基于Raspberry Pi Pico開發先進的家庭自動化系統 3.6k次閱讀
- 基于FONA通過UART與Raspberry Pi進行通訊的方案介紹 2.8k次閱讀
- 微雪電子ZeroW| Raspberry Pi ZeroW主板簡介 3.3k次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡介 4.9k次閱讀
- 微雪電子Raspberry Pi 3 Model擴展板簡介 2.4k次閱讀
- 利用Raspberry Pi構建存儲和虛擬化時間序列數據 1.3k次閱讀
- 一文了解Raspberry Pi 4各項性能跑分 3.1w次閱讀
- ROS程序是如何控制伺服機的 所有答案盡在本文 3.6k次閱讀
- 視覺享受!用Raspberry Pi實現圣誕樹燈光秀 9k次閱讀
下載排行
本周
- 1變頻器維修資料大全
- 1.28 MB | 1次下載 | 4 積分
- 2怎么為半導體測試儀選擇精密放大器
- 0.65 MB | 次下載 | 免費
- 3IP5416 集成 500mA 充電 200mA 放電的 TWS 充電盒 SOC中文資料
- 5.62 MB | 次下載 | 免費
- 4HD-1二合一恒電位儀的工作原理
- 0.01 MB | 次下載 | 1 積分
- 5rk3562ddr4設計資料圖
- 0.74 MB | 次下載 | 2 積分
- 6SQ33239 CPC8 ZVS 反激同步整流技術手冊
- 1.62 MB | 次下載 | 免費
- 7SQ38343節能離線交流/直流轉換器集成 800V MOSFET技術手冊
- 1.37 MB | 次下載 | 免費
- 8LT3580 升壓/反相DC/DC 帶2A開關的轉換器技術手冊
- 0.46 MB | 次下載 | 免費
本月
- 1EMC PCB設計總結
- 0.33 MB | 10次下載 | 免費
- 2耗盡型MOS FET產品目錄選型表
- 0.14 MB | 4次下載 | 免費
- 3PD取電芯片 ECP5702規格書
- 0.88 MB | 4次下載 | 免費
- 4氮化鎵GaN FET/GaN HEMT 功率驅動電路選型表
- 0.10 MB | 2次下載 | 免費
- 5TI系列-米爾TI AM62L核心板開發板-高能效低功耗嵌入式平臺
- 1.51 MB | 1次下載 | 免費
- 6PC5012氮化鎵 PIIP 單片集成電路數據手冊
- 1.66 MB | 1次下載 | 免費
- 7PD取電芯片,可取5/9/12/15/20V電壓ECP5702數據手冊
- 0.88 MB | 1次下載 | 免費
- 8飛騰S5000C-64雙路服務器系列應用宣傳冊--一乘科技
- 945.81 KB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233095次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191464次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81606次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73832次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論