ros2-rviz2控制unity仿真的6關節機械臂,探索從仿真到實際應用的過程


文章目錄

    • 前言(Introduction)
    • 搭建開發環境(Setup Development Environment)
    • 在window中安裝Unity(Install Unity in window)
    • 創建Docker容器,并安裝相關軟件(Create Docker containers and install related software)
    • 運行測試(Run test)

前言(Introduction)

在這里插入圖片描述

當機器人遇上游戲引擎:用Unity玩轉機械臂仿真,媽媽再也不用擔心我的Gazebo崩潰了!

想用Gazebo給機器人搞個仿真?恭喜你,即將開啟“從入門到放棄”的經典副本——環境配置復雜得像解一道高數題,而構建復雜場景時,Gazebo可能會用“卡頓”和“崩潰”來考驗你的耐心。尤其對新手來說,光是搞明白為什么模型突然飛天遁地,就足以讓人懷疑人生。

但別慌!這里有個更快樂(且不會讓你頭禿)的方案——用Unity搭建仿真環境! 沒錯,就是那個做《原神》和《王者榮耀》的Unity!它不僅能讓你像搭積木一樣輕松構建場景,還能搞定Gazebo撓破頭都難實現的復雜環境(比如讓機械臂在火星撿土豆,或者在水下擰瓶蓋)。

今天,我們就來點好玩的:用Unity仿真一個機械臂,再通過ROS2和RViz遠程操控它! 從此,你可以在Unity里造個虛擬實驗室,而ROS2負責當“傳話小哥”,讓現實和仿真無縫對接。

為什么選Unity?

  • 簡單到流淚:拖拖拽拽就能建場景,不用再和URDF文件“打架”。

  • 畫質狂魔:想要光影效果?想要真實物理?Unity表示:“就這?”

  • ROS2的好基友:通過ROS-TCP-Connector,Unity和ROS2秒變最佳拍檔。

準備好讓你的機械臂在Unity里跳個舞了嗎?Let’s go!(Gazebo:明明是我先來的……)

When Robots Meet Game Engines: Simulating Robotic Arms with Unity—Because Gazebo Crashes Are So Last Season!

Trying to set up a robot simulation in Gazebo? Congratulations, you’re about to embark on the classic “From Beginner to Burnout” quest—where environment configuration feels like solving advanced calculus, and building complex scenes comes with Gazebo’s signature “lag-and-crash” combo. For beginners, just figuring out why your robot suddenly decided to phase through the floor or launch into orbit is enough to trigger an existential crisis.

But fear not! There’s a far more joyful (and less hair-pulling) alternative—building your simulation in Unity! Yep, the same Unity behind Genshin Impact and Honor of Kings. Not only does it let you assemble scenes like virtual LEGO, but it also handles complex environments that would make Gazebo sweat bullets (think robotic arms picking potatoes on Mars or unscrewing bottles underwater).

Today, we’re doing something fun: simulating a robotic arm in Unity and controlling it remotely via ROS2 and RViz! Now you can build a virtual lab in Unity while ROS2 acts as the middleman, seamlessly bridging simulation and reality.

Why Unity?

  • So easy it hurts—Drag, drop, and build scenes without wrestling with URDF files.

  • Graphics wizardry—Want realistic lighting and physics? Unity scoffs, “Is that all?”

  • ROS2’s best buddy—With ROS-TCP-Connector, Unity and ROS2 become the ultimate dynamic duo.

Ready to make your robotic arm dance in Unity? Let’s go! (Gazebo: “But… I was here first…”)

video:ros2-rviz2控制unity仿真的6關節機械臂,探索從仿真到實際應用的過程

code: https://github.com/laoxue888/DockerRos2UnityArm

參考:

  • docker-ros2-unity-tcp-endpoint
  • Robotics-Nav2-SLAM-Example
  • unity坐賽車游戲,簡單三分鐘了解一下
  • How to Setup Unity and ROS2 in less than 5 minutes!
  • ros2-for-unity
  • moveit2_yolobb_ws
  • Unity-Robotics-Hub

搭建開發環境(Setup Development Environment)

  • Unity:2022
  • Ubuntu:24.04
  • Ros2:jazzy

在window中安裝Unity(Install Unity in window)

先安裝Unityhuyb,然后再安裝Unity

https://unity.cn/releases

創建Docker容器,并安裝相關軟件(Create Docker containers and install related software)

??創建Docker容器

docker run -it -p 6080:80 -p 10000:10000 -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=host.docker.internal:0.0 --gpus=all --name=Ros2UnityArm docker.1ms.run/ubuntu:24.04  /bin/bash

??安裝相關軟件

# 按照魚香ros一鍵安裝ros2
apt-get update
apt install wget -y
wget http://fishros.com/install -O fishros && bash fishros# 安裝遠程顯示服務程序
apt-get install x11-xserver-utils
apt install libxcb* -y
apt-get install x11-apps -y# 安裝moveit
apt install ros-${ROS_DISTRO}-moveit* -y# 安裝ros2的控制功能包
sudo apt install ros-${ROS_DISTRO}-controller-manager -y
sudo apt install ros-${ROS_DISTRO}-joint-trajectory-controller -y
sudo apt install ros-${ROS_DISTRO}-joint-state-broadcaster -y
sudo apt install ros-${ROS_DISTRO}-diff-drive-controller -y# 安裝其他功能包
# apt install ros-${ROS_DISTRO}-ros-gz -y
apt-get install ros-${ROS_DISTRO}-joint-state-publisher-gui -y
apt install ros-${ROS_DISTRO}-moveit-ros-planning-interface -y
# apt install ros-jazzy-gz-ros2-control 這個很重要 https://github.com/ros-controls/gz_ros2_control
apt install ros-${ROS_DISTRO}-gz-ros2-control -y# 用于調試,可不安裝
apt-get install gdb -y

運行測試(Run test)

source install/setup.bash
ros2 launch ros_tcp_endpoint endpoint.launch.py
source install/setup.bash
ros2 run unity_control_example follow_joint_trajectory_monitor
source install/setup.bash
ros2 launch niryo_one_moveit_config demo.launch.py

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76660.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76660.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76660.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機組成原理筆記(十四)——3.4指令類型

一臺計算機的指令系統可以有上百條指令,這些指令按其功能可以分成幾種類型,下面分別介紹。 3.4.1數據傳送類指令 一、核心概念與功能定位 數據傳送類指令是計算機指令系統中最基礎的指令類型,負責在 寄存器、主存、I/O設備 之間高效復制數…

各開源協議一覽

在 GitHub 上,開源項目通常會使用一些常見的開源協議來定義項目的使用、修改和分發規則。以下是目前 GitHub 上最常見的幾種開源協議及其差異和示例說明: TL;DR 協議寬松程度是否強制開源專利保護適用場景MIT最寬松否無希望代碼被廣泛使用Apache 2.0寬松…

51c自動駕駛~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/13793157 #匯聚感知、定位、規劃控制的自動駕駛系統 自動駕駛技術在應用到車輛上之后可以通過提高吞吐量來緩解道路擁堵,通過消除人為錯誤來提高道路安全性,并減輕駕駛員的駕駛負擔,從…

小程序開發指南

小程序開發指南 目錄 1. 小程序開發概述 1.1 什么是小程序1.2 小程序的優勢1.3 小程序的發展歷程 2. 開發準備工作 2.1 選擇開發平臺2.2 開發環境搭建2.3 開發模式選擇 3. 小程序開發流程 3.1 項目規劃3.2 界面設計3.3 代碼開發3.4 基本開發示例3.5 數據存儲3.6 網絡請求3.7 …

Day15:關于MySQL的編程技術——基礎知識

前言:先創建一個練習的數據庫和數據 1.創建數據庫并創建數據表的基本結構 -- 創建練習數據庫 CREATE DATABASE db_programming; USE db_programming;-- 創建員工表(包含各種數據類型) CREATE TABLE employees (emp_id INT PRIMARY KEY AUTO…

批處理腳本bat丨遍歷一個包含項目名稱的數組,并對每個文件中的項目執行 git pull 操作 (一鍵拉很多文件的代碼)

文章目錄 前言一、操作方式二、文件展示三、分析代碼結構四、代碼五、需要注意的潛在問題六、改進后的代碼七、改進說明八、感謝 前言 由于之前git服務部署在本地服務器,處于代碼安全角度考慮。領導讓我將所有的項目代碼手動物理備份一份并且發給他。 這種傻傻的操…

【C++】C與C++、C++內存空間、堆與棧

C嘎嘎嘎嘎嘎~ C與C的區別與聯系 C內存空間 int global_var; // 未初始化全局變量,BSS段 const char* str "Hello"; // 字符串常量text段 in數據段void func() {static int static_var; // 未初始化的靜態變量,數據段int local_var; …

舵機:機器人領域的“關節革命者”

機器人的技術,每一個細微的進步都可能引領一場行業變革。而在這場變革中,舵機作為機器人關節的核心部件,正悄然上演著一場革命性的應用風暴。從簡單的關節運動到復雜的姿態控制,舵機以其卓越的性能和無限的可能,重新定…

微前端的不斷探索之路—— qiankun 實戰與思考!

全文目錄: 開篇語📝 前言🛠? 微前端是什么?為什么需要它?💡 先從“前端痛點”說起🧐 微前端的優勢 🤹?♀? qiankun 簡介與核心概念🌟 為什么選擇 qiankun?…

拆解加密黑盒

在Web安全與數據爬取領域,JavaScript加密黑盒的逆向工程是核心技術之一。本文基于行業通用方法論與實戰案例,提煉出一套標準化的五步逆向流程,涵蓋目標定位、代碼提取、邏輯分析、算法復現到自動化集成的全鏈路解決方案,幫助開發者…

IntelliJ IDEA 中安裝和使用通義靈碼 AI 編程助手教程

隨著人工智能技術的發展,AI 編程助手逐漸成為提升開發效率的強大工具。通義靈碼是阿里云推出的一款 AI 編程助手,它能夠幫助開發者實現智能代碼補全、代碼解釋、生成單元測試等功能,極大地提升了編程效率和代碼質量。 IntelliJ IDEA 是一款廣…

Redis 特性和應用場景

1. Redis特性 1)In-memory data structures Redis 在內存中存儲數據,key 是 String, value 可以是 hash, list, set, sorted set, stream ... MySQL主要是通過 “表” 的方式來存儲組織數據的 “關系型數據庫” Redis主要是通過 “鍵值對”…

每天五分鐘深度學習:非線性激活函數的導數

本文重點 本文探討了神經網絡中幾種常見非線性激活函數(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax)的導數特性。通過對各激活函數導數的數學推導與實際應用分析,揭示了不同激活函數在梯度傳播、收斂速度及模型表達能力方面的差異。研究發現,ReLU及其變體在計算效率與…

redis哨兵機制 和集群有什么區別:

主從: 包括一個master節點 和多個slave節點: master節點負責數據的讀寫,slave節點負責數據的讀取,master節點收到數據變更,會同步到slave節點 去實現數據的同步。通過這樣一個架構可以去實現redis的一個讀寫分離。提升…

關于讀完《毛澤東選集》的一些思考迭代

看完毛選前四卷,從革命初期一直講到抗戰勝利,共75.8W字,花費67個小時讀完。從1925年發表的“中國社會各階級的分析”,跨越100年,通過67個小時向主席學習到: 實事求是 從實踐中來再到實踐中去 用辯證與發展…

MySQL——MVCC(多版本并發控制)

目錄 1.MVCC多版本并發控制的一些基本概念 MVCC實現原理 記錄中的隱藏字段 undo log undo log 版本鏈 ReadView 數據訪問規則 具體實現邏輯 總結 1.MVCC多版本并發控制的一些基本概念 當前讀:該取的是記錄的最新版本,讀取時還要保證其他并發事務…

【Linux篇】深入理解文件系統:從基礎概念到 ext2 文件系統的應用與解析

文件系統的魔法:讓計算機理解并存儲你的數據 一. 文件系統1.1 塊1.2 分區1.3 inode(索引節點) 二. ext2文件系統2.1 認識文件系統2.2 Block Group (塊組)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 塊組內部結構2.3.1 超級塊(Super Bloc…

3 VS Code 配置優化與實用插件推薦:settings.json 詳解、CodeGeeX 智能編程助手及插件離線安裝方法

1 優化 settings.json 文件 1.1 settings.json 簡介 settings.json 是 VS Code 的核心配置文件,用于存儲用戶的個性化設置和偏好。通過該文件,用戶可以自定義和覆蓋 VS Code 的默認行為,包括但不限于以下方面: 編輯器外觀&#…

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識 1. 引言 在微服務架構中,分布式事務處理是一個復雜且常見的問題。隨著業務規模的擴大,單體應用逐漸拆分為多個微服務,每個服務…

力扣面試150題--有效的數獨

Day 19 題目描述 思路 其實還挺簡單的&#xff0c;主要的難點在于如何判斷每個小數獨是否滿足要求 詳細見代碼 class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set new HashSet<>();//處理行HashSet<Character> set1…