ArduPilot飞控之ubuntu22.04-Gazebo模拟

2023-05-16

ArduPilot飞控之ubuntu22.04-Gazebo模拟

  • 1. 源由
  • 2. Gazebo安装
    • 2.1 ubuntu22.04系统更新
    • 2.2 安装Gazebo Garden
    • 2.3 安装ArduPilot Gazebo插件
      • 2.3.1 基础库安装
      • 2.3.2 源代码编译
      • 2.3.3 配置插件
    • 2.4 测试Gazebo Garden
  • 3. ArduPilot SITL + Gazebo模拟
    • 3.1 Gazebo Garden模拟环境
    • 3.2 ArduPilot SITL仿真环境
    • 3.3 ArduPilot SITL + Gazebo 测试视频
  • 4. 参考资料
  • 5. 补充资料
    • 5.1 官网视频
    • 5.2 关于HITL

1. 源由

Gazebo是一款知名且备受业界推崇的模拟器,已被广泛用于地面、海洋和太空机器人的许多模拟挑战,包括DARPA机器人竞赛。

这里简单介绍如何使用最新一代Gazebo作为ArduPilot Rover、Coper和Plane的外部模拟器。为后续模拟器调试奠定基础。

2. Gazebo安装

2.1 ubuntu22.04系统更新

$ sudo apt-get update
$ sudo apt-get install lsb-release wget gnupg

2.2 安装Gazebo Garden

$ sudo wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install gz-garden

2.3 安装ArduPilot Gazebo插件

2.3.1 基础库安装

$ sudo apt install libgz-sim7-dev rapidjson-dev

2.3.2 源代码编译

$ git clone git@github.com:ArduPilot/ardupilot_gazebo.git
$ cd ardupilot_gazebo
$ mkdir build && cd build
$ cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
$ make -j4

2.3.3 配置插件

可选择手工或者脚本配置方法

$ export GZ_SIM_SYSTEM_PLUGIN_PATH=<ardupilot_gazebo path>/build:$GZ_SIM_SYSTEM_PLUGIN_PATH
$ export GZ_SIM_RESOURCE_PATH=<ardupilot_gazebo path>/models:$HOME/ardupilot_gazebo/worlds:$GZ_SIM_RESOURCE_PATH
or
$ echo 'export GZ_SIM_SYSTEM_PLUGIN_PATH=$HOME/ardupilot_gazebo/build:${GZ_SIM_SYSTEM_PLUGIN_PATH}' >> ~/.bashrc
$ echo 'export GZ_SIM_RESOURCE_PATH=$HOME/ardupilot_gazebo/models:$HOME/ardupilot_gazebo/worlds:${GZ_SIM_RESOURCE_PATH}' >> ~/.bashrc

这里笔者采用脚本配置方法:

$ pwd
/home/daniel/Work/ardupilot_gazebo

$ echo 'export GZ_SIM_SYSTEM_PLUGIN_PATH=/home/daniel/Work/ardupilot_gazebo/build:${GZ_SIM_SYSTEM_PLUGIN_PATH}' >> ~/.bashrc
$ echo 'export GZ_SIM_RESOURCE_PATH=/home/daniel/Work/ardupilot_gazebo/models:/home/daniel/Work/ardupilot_gazebo/worlds:${GZ_SIM_RESOURCE_PATH}' >> ~/.bashrc

$ . ~/.profile

2.4 测试Gazebo Garden

$ gz sim -v4 -r shapes.sdf
[Msg] Gazebo Sim GUI    v7.4.0
[Dbg] [gz.cc:162] Subscribing to [/gazebo/starting_world].
[Dbg] [gz.cc:164] Waiting for a world to be set from the GUI...
[Dbg] [Gui.cc:260] Waiting for subscribers to [/gazebo/starting_world]...
[Msg] Received world [shapes.sdf] from the GUI.
[Dbg] [gz.cc:168] Unsubscribing from [/gazebo/starting_world].
[Msg] Gazebo Sim Server v7.4.0
[Msg] Loading SDF world file[/usr/share/gz/gz-sim7/worlds/shapes.sdf].
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[Msg] Serving entity system service on [/entity/system/add]
[Msg] Loaded level [3]
[Msg] No systems loaded from SDF, loading defaults
[Dbg] [ServerConfig.cc:1042] Loaded (3) plugins from file [/home/daniel/.gz/sim/7/server.config]
[Dbg] [Physics.cc:869] Loaded [gz::physics::dartsim::Plugin] from library [/usr/lib/x86_64-linux-gnu/gz-physics-6/engine-plugins/libgz-physics-dartsim-plugin.so]
[Dbg] [SystemManager.cc:74] Loaded system [gz::sim::systems::Physics] for entity [1]
[Msg] Create service on [/world/shapes/create]
[Msg] Remove service on [/world/shapes/remove]
[Msg] Pose service on [/world/shapes/set_pose]
[Msg] Pose service on [/world/shapes/set_pose_vector]
[Msg] Light configuration service on [/world/shapes/light_config]
[Msg] Physics service on [/world/shapes/set_physics]
[Msg] SphericalCoordinates service on [/world/shapes/set_spherical_coordinates]
[Msg] Enable collision service on [/world/shapes/enable_collision]
[Msg] Disable collision service on [/world/shapes/disable_collision]
[Msg] Material service on [/world/shapes/visual_config]
[Msg] Material service on [/world/shapes/wheel_slip]
[Dbg] [SystemManager.cc:74] Loaded system [gz::sim::systems::UserCommands] for entity [1]
[Dbg] [SystemManager.cc:74] Loaded system [gz::sim::systems::SceneBroadcaster] for entity [1]
[Msg] Serving world controls on [/world/shapes/control], [/world/shapes/control/state] and [/world/shapes/playback/control]
[Msg] Serving GUI information on [/world/shapes/gui/info]
[Msg] World [shapes] initialized with [default_physics] physics profile.
[Msg] Serving world SDF generation service on [/world/shapes/generate_world_sdf]
[Msg] Serving world names on [/gazebo/worlds]
[Msg] Resource path add service on [/gazebo/resource_paths/add].
[Msg] Resource path get service on [/gazebo/resource_paths/get].
[Msg] Resource path resolve service on [/gazebo/resource_paths/resolve].
[Msg] Resource paths published on [/gazebo/resource_paths].
[Msg] Server control service on [/server_control].
[Msg] Found no publishers on /stats, adding root stats topic
[Msg] Found no publishers on /clock, adding root clock topic
[Dbg] [SimulationRunner.cc:513] Creating PostUpdate worker threads: 2
[Dbg] [SimulationRunner.cc:524] Creating postupdate worker thread (0)
[Dbg] [Application.cc:96] Initializing application.
[Dbg] [Application.cc:122] Qt using OpenGL graphics interface
[Msg] Serving scene information on [/world/shapes/scene/info]
[Msg] Serving graph information on [/world/shapes/scene/graph]
[Msg] Serving full state on [/world/shapes/state]
[Msg] Serving full state (async) on [/world/shapes/state_async]
[Msg] Publishing scene information on [/world/shapes/scene/info]
[Msg] Publishing entity deletions on [/world/shapes/scene/deletion]
[Msg] Publishing state changes on [/world/shapes/state]
[Msg] Publishing pose messages on [/world/shapes/pose/info]
[Msg] Publishing dynamic pose messages on [/world/shapes/dynamic_pose/info]
[GUI] [Dbg] [Application.cc:596] Create main window
[GUI] [Wrn] [Application.cc:845] [QT] qrc:/qml/StyleDialog.qml:112:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] qrc:/qml/StyleDialog.qml:105:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] qrc:/qml/StyleDialog.qml:98:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] qrc:qml/Main.qml:102:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] qrc:/qml/PluginMenu.qml:27:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Dbg] [PathManager.cc:67] Requesting resource paths through [/gazebo/resource_paths/get]
[GUI] [Wrn] [Application.cc:845] [QT] file::/Gazebo/GazeboDrawer.qml:241:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Dbg] [PathManager.cc:56] Received resource paths.
[GUI] [Wrn] [Application.cc:845] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[GUI] [Wrn] [Application.cc:845] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[GUI] [Dbg] [Gui.cc:340] GUI requesting list of world names. The server may be busy downloading resources. Please be patient.
[GUI] [Dbg] [Gui.cc:398] Requesting GUI from [/world/shapes/gui/info]...
[GUI] [Dbg] [GuiRunner.cc:149] Requesting initial state from [/world/shapes/state]...
[GUI] [Msg] Loading config [/home/daniel/.gz/sim/7/gui.config]
[GUI] [Dbg] [Application.cc:453] Loading plugin [MinimalScene]
[Dbg] [EntityComponentManager.cc:1619] Updated state thread iterators: 2 threads processing around 15 entities each.
[Wrn] [Component.hh:144] Trying to serialize component with data type [N3sdf3v135WorldE], which doesn't have `operator<<`. Component will not be serialized.
[Wrn] [Model.hh:69] Skipping serialization / deserialization for models with //pose/@relative_to attribute.
[GUI] [Dbg] [MinimalScene.cc:657] Creating gz-rendering interface for OpenGL
[GUI] [Dbg] [MinimalScene.cc:657] Creating gz-rendering interface for OpenGL
[GUI] [Dbg] [MinimalScene.cc:813] Creating render thread interface for OpenGL
[GUI] [Msg] Added plugin [3D View] to main window
[GUI] [Msg] Loaded plugin [MinimalScene] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [EntityContextMenuPlugin]
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:57:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Msg] Added plugin [Entity Context Menu] to main window
[GUI] [Msg] Loaded plugin [EntityContextMenuPlugin] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libEntityContextMenuPlugin.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [GzSceneManager]
[GUI] [Msg] Added plugin [Scene Manager] to main window
[GUI] [Msg] Loaded plugin [GzSceneManager] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libGzSceneManager.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [InteractiveViewControl]
[GUI] [Msg] Camera view controller topic advertised on [/gui/camera/view_control]
[GUI] [Msg] Camera reference visual topic advertised on [/gui/camera/view_control/reference_visual]
[GUI] [Msg] Camera view control sensitivity advertised on [/gui/camera/view_control/sensitivity]
[GUI] [Msg] Added plugin [Interactive view control] to main window
[GUI] [Msg] Loaded plugin [InteractiveViewControl] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libInteractiveViewControl.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [CameraTracking]
[GUI] [Msg] Added plugin [Camera tracking] to main window
[GUI] [Msg] Loaded plugin [CameraTracking] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libCameraTracking.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [MarkerManager]
[GUI] [Msg] Listening to stats on [/world/shapes/stats]
[GUI] [Msg] Added plugin [Marker Manager] to main window
[GUI] [Msg] Loaded plugin [MarkerManager] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libMarkerManager.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [SelectEntities]
[GUI] [Msg] Added plugin [Select entities] to main window
[GUI] [Msg] Loaded plugin [SelectEntities] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libSelectEntities.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [Spawn]
[GUI] [Wrn] [Application.cc:845] [QT] file::/Spawn/Spawn.qml:32:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Msg] Added plugin [Spawn] to main window
[GUI] [Msg] Loaded plugin [Spawn] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libSpawn.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [VisualizationCapabilities]
[GUI] [Msg] View as transparent service on [/gui/view/transparent]
[GUI] [Msg] View as wireframes service on [/gui/view/wireframes]
[GUI] [Msg] View center of mass service on [/gui/view/com]
[GUI] [Msg] View inertia service on [/gui/view/inertia]
[GUI] [Msg] View collisions service on [/gui/view/collisions]
[GUI] [Msg] View joints service on [/gui/view/joints]
[GUI] [Msg] View frames service on [/gui/view/frames]
[GUI] [Msg] Added plugin [Visualization capabilities] to main window
[GUI] [Msg] Loaded plugin [VisualizationCapabilities] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libVisualizationCapabilities.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [WorldControl]
[GUI] [Wrn] [Application.cc:845] [QT] file::/WorldControl/WorldControl.qml:30:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Msg] Using world control service [/world/shapes/control]
[GUI] [Msg] Listening to stats on [/world/shapes/stats]
[GUI] [Dbg] [WorldControl.cc:250] Using an event to share WorldControl msgs with the server
[GUI] [Msg] Added plugin [World control] to main window
[GUI] [Msg] Loaded plugin [WorldControl] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libWorldControl.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [WorldStats]
[GUI] [Msg] Listening to stats on [/world/shapes/stats]
[GUI] [Msg] Added plugin [World stats] to main window
[GUI] [Msg] Loaded plugin [WorldStats] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libWorldStats.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [Shapes]
[GUI] [Msg] Added plugin [Shapes] to main window
[GUI] [Msg] Loaded plugin [Shapes] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libShapes.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [Lights]
[GUI] [Msg] Added plugin [Lights] to main window
[GUI] [Msg] Loaded plugin [Lights] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libLights.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [TransformControl]
[GUI] [Wrn] [Application.cc:845] [QT] file::/TransformControl/TransformControl.qml:104:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] file::/TransformControl/TransformControl.qml:99:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] file::/TransformControl/TransformControl.qml:94:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Wrn] [Application.cc:845] [QT] file::/TransformControl/TransformControl.qml:89:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[GUI] [Msg] Added plugin [Transform control] to main window
[GUI] [Msg] Loaded plugin [TransformControl] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libTransformControl.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [Screenshot]
[GUI] [Msg] Screenshot service on [/gui/screenshot]
[GUI] [Msg] Added plugin [Screenshot] to main window
[GUI] [Msg] Loaded plugin [Screenshot] from path [/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libScreenshot.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [CopyPaste]
[GUI] [Msg] Added plugin [Copy/Paste] to main window
[GUI] [Msg] Loaded plugin [CopyPaste] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libCopyPaste.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [ComponentInspector]
[GUI] [Msg] Added plugin [Component inspector] to main window
[GUI] [Msg] Loaded plugin [ComponentInspector] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libComponentInspector.so]
[GUI] [Dbg] [Application.cc:453] Loading plugin [EntityTree]
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityTree/EntityTree.qml:148:7: QML ToolButton: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Msg] Added plugin [Entity tree] to main window
[GUI] [Msg] Loaded plugin [EntityTree] from path [/usr/lib/x86_64-linux-gnu/gz-sim-7/plugins/gui/libEntityTree.so]
[GUI] [Dbg] [Application.cc:323] Loading window config
[GUI] [Msg] Using server control service [/server_control]
[GUI] [Dbg] [Application.cc:610] Applying config
[GUI] [Wrn] [Component.hh:189] Trying to deserialize component with data type [N3sdf3v135WorldE], which doesn't have `operator>>`. Component will not be deserialized.
[GUI] [Wrn] [Model.hh:98] Unable to deserialize sdf::Model
[GUI] [Wrn] [Model.hh:98] Unable to deserialize sdf::Model
[GUI] [Wrn] [Model.hh:98] Unable to deserialize sdf::Model
[GUI] [Wrn] [Model.hh:98] Unable to deserialize sdf::Model
[GUI] [Wrn] [Model.hh:98] Unable to deserialize sdf::Model
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityTree/EntityTree.qml:148:7: QML ToolButton: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/WorldStats/WorldStats.qml:53:3: QML RowLayout: Binding loop detected for property "x"
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Wrn] [Application.cc:845] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[GUI] [Dbg] [MinimalScene.cc:657] Creating gz-rendering interface for OpenGL
[GUI] [Dbg] [MinimalScene.cc:813] Creating render thread interface for OpenGL
[GUI] [Wrn] [Application.cc:845] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[GUI] [Msg] Loading plugin [gz-rendering-ogre2]
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1113]  Unable to create the rendering window: OGRE EXCEPTION(3:RenderingAPIException): OpenGL 3.3 is not supported. Please update your graphics card drivers. in GL3PlusRenderSystem::initialiseContext at ./RenderSystems/GL3Plus/src/OgreGL3PlusRenderSystem.cpp (line 3434)
[GUI] [Err] [Ogre2RenderEngine.cc:1121] Unable to create the rendering window after [11] attempts.
[GUI] [Err] [Ogre2RenderEngine.cc:1032] Failed to create dummy render window.
Stack trace (most recent call last):
#31   Object "/lib/x86_64-linux-gnu/libgz-sim7-gui.so.7", at 0x7f0fa26790a8, in gz::sim::v7::gui::runGui(int&, char**, char const*, char const*, int, char const*)
#30   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa14c0cf3, in QCoreApplication::exec()
#29   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa14b875a, in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
#28   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa15130b7, in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
#27   Object "/lib/x86_64-linux-gnu/libglib-2.0.so.0", at 0x7f0fa03193e2, in g_main_context_iteration
#26   Object "/lib/x86_64-linux-gnu/libglib-2.0.so.0", at 0x7f0fa03706c7, in 
#25   Object "/lib/x86_64-linux-gnu/libglib-2.0.so.0", at 0x7f0fa031bd3a, in g_main_context_dispatch
#24   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa1513a66, in 
#23   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa14bcf26, in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)
#22   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa14b9e39, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
#21   Object "/lib/x86_64-linux-gnu/libQt5Widgets.so.5", at 0x7f0fa0b6c712, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
#20   Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f0fa14e741d, in QObject::event(QEvent*)
#19   Object "/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0x7f0f5c736513, in gz::gui::plugins::RenderWindowItem::Ready()
#18   Object "/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0x7f0f5c736120, in gz::gui::plugins::RenderThread::Initialize[abi:cxx11]()
#17   Object "/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0x7f0f5c742c7d, in gz::gui::plugins::RenderThreadRhiOpenGL::Initialize[abi:cxx11]()
#16   Object "/usr/lib/x86_64-linux-gnu/gz-gui-7/plugins/libMinimalScene.so", at 0x7f0f5c73a414, in gz::gui::plugins::GzRenderer::Initialize[abi:cxx11]()
#15   Object "/lib/x86_64-linux-gnu/libgz-rendering7.so.7", at 0x7f0f5c5984bb, in gz::rendering::v7::RenderEngineManager::Engine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
#14   Object "/lib/x86_64-linux-gnu/libgz-rendering7.so.7", at 0x7f0f5c59829e, in gz::rendering::v7::RenderEngineManagerPrivate::Engine(EngineInfo, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
#13   Object "/lib/x86_64-linux-gnu/libgz-rendering7.so.7", at 0x7f0f5c5a2b21, in gz::rendering::v7::BaseRenderEngine::Init()
#12   Object "/usr/lib/x86_64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre2.so", at 0x7f0f35fcaac2, in gz::rendering::v7::Ogre2RenderEngine::InitImpl()
#11   Object "/usr/lib/x86_64-linux-gnu/gz-rendering-7/engine-plugins/libgz-rendering-ogre2.so", at 0x7f0f35fd06f7, in gz::rendering::v7::Ogre2RenderEngine::InitAttempt()
#10   Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35aeb228, in Ogre::ResourceGroupManager::initialiseAllResourceGroups(bool)
#9    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35aeac9e, in Ogre::ResourceGroupManager::parseResourceGroupScripts(Ogre::ResourceGroupManager::ResourceGroup*)
#8    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b2abac, in Ogre::ScriptCompilerManager::parseScript(Ogre::SharedPtr<Ogre::DataStream>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
#7    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b225b2, in Ogre::ScriptCompiler::compile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
#6    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b222b2, in Ogre::ScriptCompiler::compile(Ogre::SharedPtr<std::__cxx11::list<Ogre::SharedPtr<Ogre::ConcreteNode>, Ogre::STLAllocator<Ogre::SharedPtr<Ogre::ConcreteNode>, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
#5    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b33bdf, in Ogre::MaterialTranslator::translate(Ogre::ScriptCompiler*, Ogre::SharedPtr<Ogre::AbstractNode> const&)
#4    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b349a7, in Ogre::TechniqueTranslator::translate(Ogre::ScriptCompiler*, Ogre::SharedPtr<Ogre::AbstractNode> const&)
#3    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b3a2ce, in Ogre::PassTranslator::translate(Ogre::ScriptCompiler*, Ogre::SharedPtr<Ogre::AbstractNode> const&)
#2    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35b9e9d9, in Ogre::Technique::createPass()
#1    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f35aa6cd0, in Ogre::Pass::Pass(Ogre::Technique*, unsigned short)
#0    Object "/usr/lib/x86_64-linux-gnu/OGRE-2.3/libOgreNextMain.so.2.3.1", at 0x7f0f359d9e3d, in Ogre::Hlms::createDatablock(Ogre::IdString, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, Ogre::HlmsMacroblock const&, Ogre::HlmsBlendblock const&, std::vector<std::pair<Ogre::IdString, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<Ogre::IdString, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Segmentation fault (Address not mapped to object [0x220])
[Dbg] [SignalHandler.cc:141] Received signal[2].
[Dbg] [ServerPrivate.cc:115] Server received signal[2]
[Dbg] [gz.cc:411] Shutting down gz-sim-server
[Dbg] [SimulationRunner.cc:540] Exiting postupdate worker thread (0)

笔记本硬件环境遇到问题:不支持OpenGL3.3

$ sudo apt-get install mesa-utils
[sudo] password for daniel: 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  tightvncpasswd usb-modeswitch usb-modeswitch-data
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  mesa-utils-bin
The following NEW packages will be installed:
  mesa-utils mesa-utils-bin
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,118 kB of archives.
After this operation, 2,455 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://cn.archive.ubuntu.com/ubuntu jammy/universe amd64 mesa-utils-bin amd64 8.4.0-1ubuntu1 [53.8 kB]
Get:2 http://cn.archive.ubuntu.com/ubuntu jammy/universe amd64 mesa-utils amd64 8.4.0-1ubuntu1 [1,065 kB]
Fetched 1,118 kB in 5s (242 kB/s)       
Selecting previously unselected package mesa-utils-bin:amd64.
(Reading database ... 310676 files and directories currently installed.)
Preparing to unpack .../mesa-utils-bin_8.4.0-1ubuntu1_amd64.deb ...
Unpacking mesa-utils-bin:amd64 (8.4.0-1ubuntu1) ...
Selecting previously unselected package mesa-utils.
Preparing to unpack .../mesa-utils_8.4.0-1ubuntu1_amd64.deb ...
Unpacking mesa-utils (8.4.0-1ubuntu1) ...
Setting up mesa-utils-bin:amd64 (8.4.0-1ubuntu1) ...
Setting up mesa-utils (8.4.0-1ubuntu1) ...
Processing triggers for man-db (2.10.2-1) ...

$ glxinfo | grep "OpenGL version"
OpenGL version string: 3.0 Mesa 22.2.5

更换Gazebo启动命令,性能可能会不太好!

$ gz sim -v4 -r shapes.sdf --render-engine ogre

在这里插入图片描述

3. ArduPilot SITL + Gazebo模拟

笔记本环境

daniel@daniel-ThinkPad-SL410:~$ uname -r
5.19.0-35-generic
daniel@daniel-ThinkPad-SL410:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.2 LTS
Release:        22.04
Codename:       jammy

ArduPilot版本

$ git log -n 1
commit c33653cd4ebec780d6961c0bcbd42a38c787fb28 (HEAD -> Copter-4.3, origin/Copter-4.3)
Author: bugobliterator <siddharthbharatpurohit@gmail.com>
Date:   Sat Mar 18 09:04:26 2023 +1100

    bootloaders: add CubeOrangePlus-bdshot bootloader

Gazebo版本

$ gz sim --version
Gazebo Sim, version 7.4.0
Copyright (C) 2018 Open Source Robotics Foundation.
Released under the Apache 2.0 License.

ArduPilot Gazebo plugin版本

$ git log -n 1
commit 0753b067a5a20219930818de34395577b930c129 (HEAD -> main, origin/main, origin/HEAD)
Author: Rhys Mainwaring <rhys.mainwaring@me.com>
Date:   Mon Mar 20 15:51:29 2023 +0000

    Update README (#50)

    Update example models section with links to recent additions to SITL_Models/Gazebo.

    Signed-off-by: Rhys Mainwaring <rhys.mainwaring@me.com>

3.1 Gazebo Garden模拟环境

$ gz sim -v4 -r iris_runway.sdf --render-engine ogre

在这里插入图片描述

3.2 ArduPilot SITL仿真环境

$ sim_vehicle.py -v ArduCopter -f gazebo-iris --model JSON --map --console

注:SITL安装,详见:ArduPilot飞控之ubuntu22.04-SITL安装
在这里插入图片描述

3.3 ArduPilot SITL + Gazebo 测试视频

ArduPilot SITL + Gazebo Demo Try

MAVProxy输入命令如下:

mode guided
arm throttle
takeoff 5
position 0 0 3
position 100 100 0
position 100 -200 0
rtl

4. 参考资料

【1】Using SITL with Gazebo
【2】Gazebo Garden/7th major release of Gazebo
【3】ArduPilot Gazebo Plugin
【4】ArduPilot飞控之ubuntu22.04-SITL安装
【5】MAVProxy

5. 补充资料

5.1 官网视频

Gazebo Ship Landing Demo

5.2 关于HITL

当前ArdupilotCopter尚没有HITL模拟的方法,后面将跳过Copter HITL部分。

有兴趣的朋友可以适时去跟进了解下hitl-simulators。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ArduPilot飞控之ubuntu22.04-Gazebo模拟 的相关文章

  • UR5+robotiq_85_gripper GAZEBO模拟视觉抓取平台仿真-2

    6 视觉算法 这里我以OpenCv中的SIFT描述子检测目标物体相对于相机的位姿 这里有个开源的包 find object 2d是ROS平台下一个功能强大的识别物体的功能包 由于对于纯颜色物体具有很少的特征 xff0c 所以我决定把另外两个
  • gazebo中视觉仿真怎么使用自定义贴图的问题

    gazebo中提供了很少的贴图 xff0c 场景只是用这几张贴图 xff0c 视觉SLAM仿真很容易在不该闭环的时候闭环 xff0c 导致根本没法用 那么我们怎么添加自己的贴图呢 xff1f 首先gazebo建模 使用默认贴图 xff0c
  • ROS打不开gazebo的问题

    前段时间 xff0c 将师兄的Ros工程搬到我的电脑上运行 xff0c 但是一直打不开gazebo xff0c gazebo一直卡在了黑屏的页面 同样的工程 xff0c 在师兄电脑上是可以跑的 xff0c 并不是ros工程的问题 于是我让其
  • win7下 pixhawk (ardupilot) 的编译

    前几天都在搞pixhawk源码编译问题 xff0c 什么在window下用Console或者eclipse xff0c 还是在Ubuntu下 xff0c 都做了 xff0c 而且把 mk文件都看了 xff0c 结果还是有bug 总结一下三种
  • ROS2中使用gazebo仿真时找不到libgazebo_ros_openni_kinect.so

    因为ros2的gazebo ros pkgs中 xff0c 已经将该插件移除 xff0c 或者说将该插件的功能合并到libgazebo ros camera so中 xff0c 这里是作者的说明 合并后 xff0c 深度相机的用法参考这里
  • CMU,[gazebo]process has died.报错解决.VLP-16.velodyne

    解决方法 xff1a sudo apt get install ros noetic velodyne 报错 xff1a roslaunch vehicle simulator system garage launch 一输入就报各种各样的
  • 驱动仿真物品移动乌龟\Gazebo\cmd_vel和/gazebo/set_model_state

    一 驱动小乌龟 先打开一个节点 rosrun turtlesim turtlesim node 接着输入 rostopic pub turtle1 cmd vel geometry msgs Twist 34 linear x 2 0 y
  • ArduCopter——ArduPilot——航点导航WPNav(一)

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 现如今 xff0c 四旋翼飞行器已经从几年前的遥控航模变成真正可以超视距操控的无人机 xff0c 离不开伟大
  • ROS+Gazebo----Unable to find uri[model:// ]

    基于ROS 43 Gazebo环境 xff0c 用roslaunch把sdf模型加载到gazebo仿真世界 目录结构如下 输入命令roslaunch my simulation my world launch 报错 xff1a 1 不接入网
  • 6.28-机器人模拟器Gazebo基础

    gazebo基础学习 前言 在算法人员开发出可以真机使用的算法之前进行仿真学习机器人物理仿真器的基本使用 xff0c 包括创建场景 xff0c 制作ROS控制接口等 目录 gazebo基础学习 前言 目录 参考 学习记录 基础 安装gaze
  • ROS/Gazebo练习2: stack light simulation

    light description urdf light xacro span class token prolog lt xml version 61 34 1 0 34 gt span span class token comment
  • ubuntu22.04安装ros教程

    安装 ROS 是一个比较复杂的过程 xff0c 不同版本的 Ubuntu 系统对应的 ROS 版本也不尽相同 xff0c 因此需要认真阅读官方教程 下面是在 Ubuntu 22 04 上安装 ROS 的一般步骤 xff1a 更新系统 xff
  • 基于gazebo的无人车编队仿真实战总结(二)

    基于gazebo的无人车编队仿真实战总结 xff08 二 xff09 上一篇博客是通过古月居的多机器人编队仿真考虑讲前期做的基于阿克曼转向的仿真模型 xff0c 进行三台无人小车的编队仿真 问题 1 将无人小车的仿真模型 xff0c 按照博
  • Ardupilot SITL——arducopter 操作步骤

    打开cygwin输入 cd ardupilot ArduCopter Tools autotest sim vehicle py map console xff08 默认master下版本arducopter xff0c 默认模拟 四轴 x
  • Ardupilot笔记:Rover auto模式下的执行流程

    先从mode auto cpp的update 开始分析 流程如图 xff1a 进入函数update 后会执行函数navigate to waypoint mode auto cpp span class token keyword void
  • ROS--URDF集成Gazebo仿真小车和rviz结合

    ROS URDF集成Gazebo仿真小车 实现流程 需要编写封装惯性矩阵算法的 xacro 文件 为机器人模型中的每一个 link 添加 collision 和 inertial 标签 xff0c 并且重置颜色属性 在 launch 文件中
  • 25B无人直升机调试(Tuning)

    要知道的直升机原理 首先要掌握的5个飞行模式 本文首先调试自稳模式 Stabilize 自稳模式 Alt Hold 定高模式 Loiter OF loiter 悬停模式 RTL Return to Launch 返航模式 Auto 自动模式
  • Pixhawk VTOL SITL仿真

    Pixhawk VTOL 和 SITL Simulation 需求的软件 MAVProxy 下载地址 http firmware ardupilot org Tools MAVProxy MAVProxySetup latest exe C
  • URDF、Gazebo与Rviz机器人仿真综合应用-autolabor笔记

    URDF Gazebo与Rviz综合应用 6 7 1 1 机器人运动控制 编写机器人my base xacro 编写传动装置以及控制器move xacro文件 搭建环境world文件 将上述整合进一个car xacro文件 加载惯性矩阵xa
  • gazebo通过sdf搭建仿真环境和机器人Husky

    具体格式要求可参考 http sdformat org spec ver 1 6 elem sdf

随机推荐

  • 利用BP神经网络进行函数拟合

    利用BP神经网络进行函数拟合 摘要关键词问题描述算法设计结果分析与讨论结论Python源代码 摘要 数据拟合是在假设模型结构已知的条件下最优确定模型中未知参数使预测值与数据吻合度最高 xff0c 本文选取线性项加激活函数组成一个非线性模型
  • curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused的几种解决方式

    curl 7 Failed to connect to raw githubusercontent com port 443 Connection refused的几种解决方式 xff1f 前言 xff1a 最近随着flutter的发布 x
  • js事件-笔记

    这里写目录标题 js事件常见事件事件的注册方式事件处理分级1 DOM0级事件处理程序 xff1a 2 DOM2级事件处理程序 xff1a 3 DOM3级事件 事件流三个阶段 js事件 常见事件 onload 加载完成事件 页面加载之后 xf
  • 工程伦理2021年春季学期线上课程习题全部解答

    工程伦理2021年春季学期线上课程习题全部解答 提示 xff1a 在搜索题目时也可以关注 学小易 公众号进行查找题目及解答 xff0c 此处是个人总结的答案 注意 xff1a 有一些题号是重复的 xff0c 按照题号一一对应即可 第一章 B
  • vue中v-model详解

    vue中v model详解 v model 本质上是一个语法糖 xff0c 是v bind和事件监听 xff08 64 input xff09 的合并操作 vue使用v model实现这些标签数据的双向绑定 xff0c 它会根据控件类型自动
  • 强化学习进阶 第七讲 TRPO

    转载自知乎专栏 天津包子馅儿 的知乎 今天开始我们的第七讲 xff0c TRPO 先简短地介绍一下 xff1a TRPO是英文单词Trust region policy optimization的简称 xff0c 翻译成中文是信赖域策略优化
  • 防抖(debounce)、节流(throttle)以及前端锁(mutex)

    节流和去抖的核心其实就是限制某一个方法被频繁触发 节流 xff1a 间隔时间段触发一次去抖 xff1a 对于一定时间段的连续的函数调用 xff0c 只让其执行一次 xff0c 两者有时候不需要细分 xff0c 节流去抖也可以合在一起 具体场
  • css3的动画属性总结

  • 算法题:按图找最近的路(js/python3)

    题目描述 xff1a 有一张 m n 的地图 xff0c 地图描述了起点和终点的位置 xff0c 也描述了两点间分布的高山湖泊 xff0c 高山湖泊挡住去路 xff0c 需要绕道行走 xff0c 请问从起点到终点的最短路径距离是多少 xff
  • git和远程仓库建立连接详细过程

    git和远程仓库建立连接详细过程 建立远程仓库 首先在github gitee上创建自己的一个仓库 xff0c 并将自己的路径复制下来 xff0c 如下图 建立本地仓库 本地新建文件夹存储工程文件 xff0c 并且初始化仓库 打开gitba
  • 微信小程序封装请求

    封装请求 解决的问题 很多页面中请求的url前半部分都是一样的 xff0c 重复书写导致页面代码冗余复杂同时逻辑容易不清晰 xff0c 所以采用单独将请求封装成一个文件 xff08 模块 xff09 使得这些问题得到解决 前期基础知识 un
  • 交响乐排布及乐器音色特点

    交响乐布局 乐器组成及音色特点 木管组及铜管组代表乐器 木管组 铜管组 钢琴键谱图 国际谱和大小字组记录方式对比 其他乐器在钢琴键盘上音域表示图示 单簧管和长笛音色特点 音色特点综合分析
  • 【matlab】获取文件夹下文件名或路径保存到txt

    获取某文件夹下的所有文件名并保存 当需要在某一个文件夹下获取子文件的所有文件名 xff0c 并进行保存时 xff0c 可使用下面的代码 xff1a Path 61 39 D 文件夹 39 设置数据存放的文件夹路径 File 61 dir f
  • pycharm:新建虚拟环境和安装依赖

    前言 小编深有体会 xff0c 在刚开始用pycharm跑python的项目的时候 xff0c 一时间不知道如何下手 xff0c 特别是作为一个新手小白 xff0c 这里总结了一份新手避坑指南 xff0c 主要是新建虚拟环境 xff08 生
  • unbuntu安装 PyTorch 1.7.0+ torchvision 0.8.1

    unbuntu安装 PyTorch 1 7 0 43 torchvision 0 8 1 一 创建环境二 启动环境三 查看电脑CUDA版本 xff0c 若电脑只有CPU则忽略这一步四 下载安装包到本地安装4 1 点击以下链接进入下载网站4
  • 树莓派VNC界面不显示或显示不全问题_解决方案

    刚开始上手树莓派的小伙伴们估计都遇到过这一问题 xff0c 用树莓派登录VNC时 xff0c 界面不显示或者界面显示的比例有问题 先打开VNC xff0c 输入自己的IP地址 xff0c 登录VNC 我这里在登录VNC时 xff0c VNC
  • ArcGIS Engine:对COM组件的调用返回了错误HRESULT E_FAIL

    最近做一个项目 xff0c 需要调用GP的 通视性 工具 该工具在ARCScene中界面如下 xff1a 需要两个参数 xff08 必选 xff09 xff0c 即视线和障碍物 xff0c 在 帮助 中查看要求参数都是FeatureLaye
  • idea 2019.3之后的版本的项目使用gradle构建,编译时会出现中文乱码

    目录 背景1 修改gradle编译选项2 修改idea设置3 其他方法 xff08 尝试后没有效果 xff09 3 1 修改File Encdoing3 2 修改idea的custom VM option 背景 把公司电脑的idea更新到了
  • shell编程3循环语句

    文章目录 shell编程3循环语句1 for循环1 1 基本格式1 2 类C语言格式 2 while循环2 1 基本格式2 2 死循环 3 until循环4 跳出循环4 1 continue4 2 break 5 实验5 1 编写脚本实现计
  • ArduPilot飞控之ubuntu22.04-Gazebo模拟

    ArduPilot飞控之ubuntu22 04 Gazebo模拟 1 源由2 Gazebo安装2 1 ubuntu22 04系统更新2 2 安装Gazebo Garden2 3 安装ArduPilot Gazebo插件2 3 1 基础库安装