px4 / px4-avoidance Goto Github PK
View Code? Open in Web Editor NEWPX4 avoidance ROS node for obstacle detection and avoidance.
Home Page: http://px4.io
License: BSD 3-Clause "New" or "Revised" License
PX4 avoidance ROS node for obstacle detection and avoidance.
Home Page: http://px4.io
License: BSD 3-Clause "New" or "Revised" License
local_planner
fails to build with the following error
Errors << local_planner:make /home/jalim/auterion_ws/logs/local_planner/build.make.000.log
/home/jalim/auterion_ws/devel/.private/local_planner/lib/liblocal_planner.so: undefined reference to `YAML::detail::node_data::empty_scalar[abi:cxx11]'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/jalim/auterion_ws/devel/.private/local_planner/lib/local_planner/local_planner_node] Error 1
make[1]: *** [CMakeFiles/local_planner_node.dir/all] Error 2
make: *** [all] Error 2
cd /home/jalim/auterion_ws/build/local_planner; catkin build --get-env local_planner | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd -
This seems to be related to yaml-cpp
used for parsing yaml files for the rviz environment. Is there a specific requirement for yaml-cpp
?
I have tried building building yaml-cpp from source at the yaml-cpp repo as well as installing with ros-kinetic-yaml-*
Could it be more desirable to have this contained within the workspace by using something like yaml-cpp_catkin
?
Hi I am currently testing the avoidance pkg in an outdoor setup. I am using the R200 dvkit. I suspect that the camera is not tuned for outdoor operations. Do you have recommended R200 parameters for outdoor operations?
I am using the global planet in the master branch. It always reports that the goal position is occupied while it is actually not.
Thanks
std::clock measures the processor time and is in many cases not what you want.
For example it's used to calculate dt
in https://github.com/PX4/avoidance/blob/master/local_planner/src/nodes/waypoint_generator.cpp#L243.
This is not correct and std::chrono::high_resolution_clock::now should be used instead.
std::clock
is used at several places and all of them need to be validated.
Tried running below command -
$ roslaunch avoidance local_planner_sitl_mavros.launch
Gazebo is stuck displaying "Preparing your world" dialog.
local-planner-sitl.txt
I am trying to build your node in ROS Melodic on Ubuntu 18.04 and it fails with:
/home/arek/catkin_ws/src/avoidance/global_planner/include/global_planner/bezier.h:132:12: error: return-statement with a value, in function returning 'void' [-fpermissive] return path;
Problematic line:
https://github.com/PX4/avoidance/blob/acebb50ba6d7d0cb8dc9a99aeddc7b9e8469485a/global_planner/include/global_planner/bezier.h#L132
I have pushed a fix just to build it but I assume it's not how the code is intended to work. I will try to push more commits if I will make the whole package work and test it.
Hi people.
I am trying to run the runOdroid script from my host laptop to a Jetson TX2.
In the beginning of the scrip there is . ~/.bas_ros and when the scrip reach the lines to run the commands in separate tabs e.g. gnome-terminal --tab -e "ssh -t [email protected] 'sleep 0; . ~/.bash_ros; roscore; bash -i'" \
I get the error in the terminal bash: roscore: command not found.
My best guess is that it has to do with the line ". ~/.bas_ros"
Could some one help me :) thank you :)
I've running avoidance simulations of both planners
I found that global planner works great and capable of real-time mapping and 3D path planning with rough scaled octomap and the path smoothing.
Also, planning may fail but it mostly keep drone from collisions
so the result in gazebo simulation is very desirable and satisfactory.
Whereas the local planner, It usually finds way in 2D, slowly progresses and often collide into trees or terrains and sometimes it goes around trees like forever due to it does not record previous point clouds
and computation in my desktop is also heavy (probably due to lots of visualization in RViz)
I wonder why only local planner is available for running on hardware such as Intel Aero RTF
and dev team focuses are in local planner, not the global planner
Thanks in advance.
As far as I can tell, the default parameters set in the global_planner_node.cfg file are completely ignored until the dynamicReconfigureCallback function is triggered by clicking in the rqt_reconfigure window. Specifically, since the CELL_SCALE is a "level 2" parameter, I have to actually click that specific parameter in rqt_reconfigure in order to latch my .cfg file's default value.
Is this expected behavior? It seems like it would make sense to trigger this callback immediately on launch so that the user's default params are latched in, instead of using the values set in the .h header files.
Both planners are now split as two independent ROS packages (still in the same repo).
The READMEs need to be updated accordingly.
OMPL (Open Motion Planning Library) is a library which contains most of the state-of-the-art motion and path planning algorithms. It's already used in various robotics frameworks, including MoveIt!. Would be interesting to explore the possibility of integrate it with the Avoidance API in order to add other alternatives to the global planner.
Note also that the license is permissive and should set us good to go on the integration.
I am open to discuss this on the next avoidance call.
@mrivi, @baumanta, @nicovanduijn what do you think?
Goal: in manual mode obstacle avoidance is used to avoid crashing into obstacles.
Intended behavior: not full avoidance of obstacle is needed, main goal is to avoid a crash.
Use case: inspection
Hello,
I'm a beginner in px4, ROS, and Gazebo. My target is to deploy this program on jetson tx2. But before that, I want to try the offboard simulator on my desktop.
Followed the steps mentioned in this repository and installed all the dependencies.
OS: Ubuntu 16.04
ROS-Kinetic
Gazebo 9
After I do "make px4_sitl_default gazebo", it opens a new Gazebo window and freezes making the program at "EKF commencing GPS fusion". I got no idea where should I start from as I can't run the program unless I've built it successfully. Am I supposed to create obstacles in the Gazebo simulator myself and provide the file path to the program? Thanks in advance.
Dear people.
I am on the way thinking about implementing the global planner in real.
I can not figure out where in the mavros launch file is specified the transformation between NED->ENU conversion.
In other words, I would like to set up in my own mavros launch file the coordinates NED-Pixhawk aligned or transformed with the coordinates ENU-ROS.
Any help I appreciate it.
Thank you.
Hi.
The link that points to running the package on odroid is broken.
https://github.com/PX4/avoidance#running-on-odroid
Could you please update it?
Thanks.
As I follow instruction on this repo.
I came to find some problems with connections.
INFO [simulator] Waiting for simulator to connect on TCP port 4560
make px4_sitl_default gazebo
INFO [simulator] Waiting for simulator to connect on TCP port 4560
INFO [simulator] Simulator connected on TCP port 4560.
Hope this could be solved soon.
Thanks.
I'm getting the following error while trying to launch the simulation.
$ roslaunch global_planner global_planner_sitl_mavros.launch
... logging to /home/rajat/.ros/log/5e6ec4d2-daa4-11e8-aa40-4cbb58b223ff/roslaunch-rajat-Vostro-3449-6976.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 306, in main
p.start()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 268, in start
self._start_infrastructure()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 217, in _start_infrastructure
self._load_config()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/parent.py", line 132, in _load_config
roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 451, in load_config_default
loader.load(f, config, verbose=verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 749, in load
self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 721, in _load_launch
self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 685, in _recurse_load
val = self._include_tag(tag, context, ros_config, default_machine, is_core, verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 95, in call
return f(*args, **kwds)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 627, in _include_tag
default_machine, is_core, verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 685, in _recurse_load
val = self._include_tag(tag, context, ros_config, default_machine, is_core, verbose)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 95, in call
return f(*args, **kwds)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 589, in _include_tag
inc_filename = self.resolve_args(tag.attributes['file'].value, context)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 183, in resolve_args
return substitution_args.resolve_args(args, context=context.resolve_dict, resolve_anon=self.resolve_anon)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 370, in resolve_args
resolved = _resolve_args(resolved, context, resolve_anon, commands)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 383, in _resolve_args
resolved = commands[command](resolved, a, args, context)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 151, in _find
source_path_to_packages=source_path_to_packages)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/substitution_args.py", line 197, in _find_executable
full_path = _get_executable_path(rp.get_path(args[0]), path)
File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 203, in get_path
raise ResourceNotFound(name, ros_paths=self._ros_paths)
ResourceNotFound: px4
ROS path [0]=/opt/ros/kinetic/share/ros
ROS path [1]=/home/rajat/catkin_ws/src/avoidance/global_planner
ROS path [2]=/home/rajat/catkin_ws/src/avoidance/local_planner
ROS path [3]=/opt/ros/kinetic/share
The simulation works when I run make posix_sitl_default gazebo
Build of `local_planner' fails due to the following error
In file included from /home/docker-rajat/catkin_ws/src/avoidance/local_planner/src/nodes/local_planner_node.cpp:1:0:
/home/docker-rajat/catkin_ws/src/avoidance/local_planner/src/nodes/local_planner_node.h:18:48: fatal error: mavros_msgs/CompanionProcessStatus.h: No such file or directory
The entire output is as follows
$ catkin build -w ~/catkin_ws
-----------------------------------------------------------------
Profile: default
Extending: [env] /opt/ros/kinetic
Workspace: /home/docker-rajat/catkin_ws
-----------------------------------------------------------------
Source Space: [exists] /home/docker-rajat/catkin_ws/src
Log Space: [missing] /home/docker-rajat/catkin_ws/logs
Build Space: [exists] /home/docker-rajat/catkin_ws/build
Devel Space: [exists] /home/docker-rajat/catkin_ws/devel
Install Space: [unused] /home/docker-rajat/catkin_ws/install
DESTDIR: [unused] None
-----------------------------------------------------------------
Devel Space Layout: linked
Install Space Layout: None
-----------------------------------------------------------------
Additional CMake Args: None
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False
-----------------------------------------------------------------
Whitelisted Packages: None
Blacklisted Packages: None
-----------------------------------------------------------------
Workspace configuration appears valid.
NOTE: Forcing CMake to run for each package.
-----------------------------------------------------------------
[build] Found '2' packages in 0.0 seconds.
[build] Updating package table.
Starting >>> catkin_tools_prebuild
Finished <<< catkin_tools_prebuild [ 7.0 seconds ]
Starting >>> global_planner
Starting >>> local_planner
______________________________________________________________________________________________________________________________________________
Warnings << local_planner:cmake /home/docker-rajat/catkin_ws/logs/local_planner/build.cmake.000.log
** WARNING ** io features related to openni2 will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
** WARNING ** visualization features related to openni2 will be disabled
cd /home/docker-rajat/catkin_ws/build/local_planner; catkin build --get-env local_planner | catkin env -si /usr/bin/cmake /home/docker-rajat/catkin_ws/src/avoidance/local_planner --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/docker-rajat/catkin_ws/devel/.private/local_planner -DCMAKE_INSTALL_PREFIX=/home/docker-rajat/catkin_ws/install; cd -
..............................................................................................................................................
______________________________________________________________________________________________________________________________________________
Warnings << global_planner:cmake /home/docker-rajat/catkin_ws/logs/global_planner/build.cmake.000.log
** WARNING ** io features related to openni2 will be disabled
** WARNING ** io features related to pcap will be disabled
** WARNING ** io features related to png will be disabled
** WARNING ** visualization features related to openni2 will be disabled
cd /home/docker-rajat/catkin_ws/build/global_planner; catkin build --get-env global_planner | catkin env -si /usr/bin/cmake /home/docker-rajat/catkin_ws/src/avoidance/global_planner --no-warn-unused-cli -DCATKIN_DEVEL_PREFIX=/home/docker-rajat/catkin_ws/devel/.private/global_planner -DCMAKE_INSTALL_PREFIX=/home/docker-rajat/catkin_ws/install; cd -
..............................................................................................................................................
Finished <<< global_planner [ 11 minutes and 14.2 seconds ]
______________________________________________________________________________________________________________________________________________
Errors << local_planner:make /home/docker-rajat/catkin_ws/logs/local_planner/build.make.000.log
In file included from /home/docker-rajat/catkin_ws/src/avoidance/local_planner/src/nodes/local_planner_node.cpp:1:0:
/home/docker-rajat/catkin_ws/src/avoidance/local_planner/src/nodes/local_planner_node.h:18:48: fatal error: mavros_msgs/CompanionProcessStatus.h: No such file or directory
In file included from /home/docker-rajat/catkin_ws/src/avoidance/local_planner/src/nodes/local_planner_node_main.cpp:1:0:
/home/docker-rajat/catkin_ws/src/avoidance/local_planner/src/nodes/local_planner_node.h:18:48: fatal error: mavros_msgs/CompanionProcessStatus.h: No such file or directory
compilation terminated.
compilation terminated.
make[2]: *** [CMakeFiles/local_planner_node.dir/src/nodes/local_planner_node.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/local_planner_node.dir/src/nodes/local_planner_node_main.cpp.o] Error 1
make[1]: *** [CMakeFiles/local_planner_node.dir/all] Error 2
make: *** [all] Error 2
cd /home/docker-rajat/catkin_ws/build/local_planner; catkin build --get-env local_planner | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd -
..............................................................................................................................................
Failed << local_planner:make [ Exited with code 2 ]
Failed <<< local_planner [ 11 minutes and 49.5 seconds ]
[build] Summary: 2 of 3 packages succeeded.
[build] Ignored: None.
[build] Warnings: 2 packages succeeded with warnings.
[build] Abandoned: None.
[build] Failed: 1 packages failed.
[build] Runtime: 11 minutes and 58.2 seconds total.
[build] Note: Workspace packages have changed, please re-source setup files to use them.
Operating System is Ubuntu 16.04 with ROS Kinetic
Mavros version: Version: 0.27.0-0xenial-20181116-184226-0800
Mavlink version: Version: 2018.11.11-0xenial-20181113-004213-0800
During our tests we found that the mission take-off is violently fast when the avoidance is running. This may have gone unnoticed for a long time because we usually take off in position mode before starting the mission.
Sadly, we didn't have logging from boot enabled, so it is not completely captured in the logs below. But we can see that without the avoidance, the beginning of the log still shows the end of a smooth ramp in the z-setpoint, while the log with the enabled OA starts at a 3m altitude (to which it got presumably through a step)
I have made avoidance
simulation work on the Ubuntu 18.04 (everything worked fine but I had to build octomap_mapping
and octomap_ros
).
The only problem is that I cannot make local_planner_stereo.launch
to start, this may be a problem:
[FATAL] []: ODOM: invalid body frame orientation "frd"
[ WARN] []: MSG to TF: Quaternion Not Properly Normalized
[ INFO] []: Pointcloud timeout: Hovering at current position
and
The strange part is that local_planner_depth-camera.lauch
and global_planner
work perfectly. Do you know what's the problem?
Whole log: gist
Both planners have different dependencies and should therefore be independant in terms of build system.
I get timeouts messages Pointcloud timeout , no cloud received on topic (Hovering at current position)
both in the simulation and on hardware.
I have already spoken offline with @baumanta. As she suspected, the timeout happens because the transformation between the camera frame and local origin is not available.
Opening a issue so that we track.
I have a question that: Does obstacle avoidance work in AUTO.MISSION mode?
As far as I can tell, when publishing to the /move_base_simple/goal
topic, the global planner completely ignores the orientation of the PoseStamped object. Is there a way to set the orientation of the drone in the global planner?
I'm guessing since 94f5c03 the tests fail to build.
/home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp: In member function ‘virtual void PlannerFunctions_testDirectionTree_Test::TestBody()’:
/home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp:617:66: error: invalid initialization of reference of type ‘avoidance::PolarPoint&’ from expression of type ‘Eigen::Vector3f {aka Eigen::Matrix<float, 3, 1>}’
bool res = getDirectionFromTree(p, path_node_positions, postion);
^
In file included from /home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp:4:0:
/home/nico/catkin_ws/src/avoidance/local_planner/test/../src/nodes/planner_functions.h:73:6: note: in passing argument 1 of ‘bool avoidance::getDirectionFromTree(avoidance::PolarPoint&, const std::vector<geometry_msgs::Point_<std::allocator<void> > >&, const Vector3f&)’
bool getDirectionFromTree(
^
/home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp:618:69: error: invalid initialization of reference of type ‘avoidance::PolarPoint&’ from expression of type ‘Eigen::Vector3f {aka Eigen::Matrix<float, 3, 1>}’
bool res1 = getDirectionFromTree(p1, path_node_positions, postion1);
^
In file included from /home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp:4:0:
/home/nico/catkin_ws/src/avoidance/local_planner/test/../src/nodes/planner_functions.h:73:6: note: in passing argument 1 of ‘bool avoidance::getDirectionFromTree(avoidance::PolarPoint&, const std::vector<geometry_msgs::Point_<std::allocator<void> > >&, const Vector3f&)’
bool getDirectionFromTree(
^
/home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp:619:69: error: invalid initialization of reference of type ‘avoidance::PolarPoint&’ from expression of type ‘Eigen::Vector3f {aka Eigen::Matrix<float, 3, 1>}’
bool res2 = getDirectionFromTree(p2, path_node_positions, postion2);
^
In file included from /home/nico/catkin_ws/src/avoidance/local_planner/test/test_planner_functions.cpp:4:0:
/home/nico/catkin_ws/src/avoidance/local_planner/test/../src/nodes/planner_functions.h:73:6: note: in passing argument 1 of ‘bool avoidance::getDirectionFromTree(avoidance::PolarPoint&, const std::vector<geometry_msgs::Point_<std::allocator<void> > >&, const Vector3f&)’
bool getDirectionFromTree(
^
CMakeFiles/local_planner-test.dir/build.make:158: recipe for target 'CMakeFiles/local_planner-test.dir/test/test_planner_functions.cpp.o' failed
Not sure why travis doesn't see this problem
Directly attempting to run this launch file resulted in an error in looking up the px4 launch file, which makes sense because there is no px4.launch file in the PX4 firmware folder.
So I figure the launch files are probably just a little out of date and I need to update some directories. I change it to look for px4.launch in mavros, where it does find it, but it then complains about multiple instances of mavros running. Indeed, px4.launch does start its own mavros node, so I tried to consolidate all of the launch files into a single file to try running the software
local_planner_stereo.txt.
I believe this has the correct configuration, but I now run into strange errors from the parser:
Error [parser.cc:689] Unable to find uri[model://iris_depth_camera]
<gravity>0 0 -9.8</gravity>
<magnetic_field>6e-06 2.3e-05 -4.2e-05</magnetic_field>
<atmosphere type='adiabatic'/>
<physics name='default_physics' default='0' type='ode'>
<max_step_size>0.001</max_step_size>
<real_time_factor>1</real_time_factor>
<real_time_update_rate>1000</real_time_update_rate>
</physics>
<scene>
<ambient>0.4 0.4 0.4 1</ambient>
<background>0.7 0.7 0.7 1</background>
<shadows>1</shadows>
</scene>
[INFO] [1536011813.196405, 10.104000]: Spawn status: SpawnModel: Entity pushed to spawn queue, but spawn service timed out waiting for entity to appear in simulation under the name iris
[spawn_model-11] process has finished cleanly
log file: /home/chuples/.ros/log/1c59b90e-afc4-11e8-a497-dcfe07d69cab/spawn_model-11*.log
^C[gazebo_gui-10] killing on exit
[gazebo-9] killing on exit
[local_planner_node-6] killing on exit
[rqt_reconfigure-7] killing on exit
[rviz-4] killing on exit
[mavros-8] killing on exit
[stereo/stereo_image_proc-5] killing on exit
[tf_90_deg-2] killing on exit
[tf_depth_camera-3] killing on exit
Warning: Invalid argument passed to canTransform argument source_frame in tf2 frame_ids cannot be empty
at line 126 in /tmp/binarydeb/ros-kinetic-tf2-0.5.17/src/buffer_core.cpp
[local_planner_node-6] escalating to SIGTERM
[gazebo-9] escalating to SIGTERM
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
As noted in #48, the bags are saved inside the docker container running the avoidance node and, therefore, are lost whenever the container is destroyed.
Find a way to keep those bags out of the containers (by mounting their containing folder as a volume, so that they are kept on the host).
Hi,
The PX4/avoidance uses the 3DVFH+ algorithm for obstacle avoidance while navigating.
This algorithm is based on a octomap (occupancy grid - octree), which is widely used in mapping, mainly because of its simplicity and low memory storage.
But recently the Voxblox algorithm for obstacle avoidance have been published and released with open-source ROS implementation.
This algorithm is based on Signed Distance Field (SDF) and is shown that generating this SDF is faster than constructing the octree, and then navigation algorithm are easier to do on SDF than on octree.
What do you think? Why did you choose 3DVFH+ instead of Voxblox?
Many thanks,
Alexandre
submodule update fails for me in docker for libuavcan with
Unable to checkout 'e1c9a4f5064a336295125da25c0542a5cd601dd7' in submodule path 'src/modules/uavcan/libuavcan'
looks like git version issue.
if I add this
# Install latest git to avoid
# `Unable to checkout 'e1c9a4f5064a336295125da25c0542a5cd601dd7' in submodule path 'src/modules/uavcan/libuavcan'`
RUN apt-get install -y software-properties-common && \
add-apt-repository ppa:git-core/ppa && \
apt-get update && \
apt-get install -y git
into dockerfile before checking out Firmware it works.
Dear people
I have few questions about the global_planner
I mention them here 😊
1.- I guess that for mapping a SLAM is used, right? Just wondering what type of SLAM is used or a reference to the article would be great 😊
2.- What kind of path planning method is used?
3.- And how about the control control strategy, is a PID control strategy?
Thank you and wishing all the good.
Following a debugging session with @SaliniVenate, a few points need to be fixed in the deployment scripts:
tty:true
seems to cause log issues.run.sh
output for "prod-debug" should mention that there should be one terminal for the VPN client and one for ROSrun.sh
output was showing the wrong ip for the vpn route (172.20.255.255 instead of 172.18.255.255 for @SaliniVenate)Creating issue to start discussion on how we can test avoidance for indoors
When I run roslaunch local_planner local_planner_stereo.launch
, there will be a problem
gazebo_ros_pkgs/gazebo_ros/scripts/gzserver -e ode /home/h/catkin_ws/src/avoidance/local_planner/../sim/worlds/simple_obstacle.world.
but when I change the world to empty.world of PX4 Firmware, no error.
Is it because of the version of gazebo or gazebo_ros_packages different ?
Thanks in advance.
While looking through the code I came accross https://github.com/PX4/avoidance/blob/master/local_planner/src/nodes/local_planner.cpp#L208 and https://github.com/PX4/avoidance/blob/master/local_planner/src/nodes/local_planner_node.cpp#L894.
Both instances increase an std::vector
at each iteration but the size is not bounded, and nowhere elements are removed. This means the process will run out of memory when running long enough (it will take a long time though).
I suggest to check all dynamic data structures used in the entire project, as these 2 instances were the only ones that I checked.
Dear author,
Thank you for your sharing firstly, however, When I start the launch "roslaunch global_planner global_planner_sitl_mavros.launch ", I got an error, it tells me that failed like the following picture.
Do you know how to deal with it.
And what is more, Can I use the gazebo groundtruth to replace gps so that I can simulator the indoor situation?
I am looking for your answer, Thank you very much!
Some lessons have been learned from the local_planner demo. A few values were hard-coded for the sake of the demo, and should be merged into master.
Refactor the demo branch and merge what needs to be kept into master.
NOTE: this issue is meant to address PR #10.
I want to use the PX4 avoidance with AirSim (https://github.com/Microsoft/AirSim) instead of the Gazebo. But I can't find any document to setup it with AirSim, Can anyone give me an advice?
On quick scan I think I could use this readme to set up avoidance on simulation, but I doubt it would be possible to use it for working with real hardware.
Some possible improvements:
the local planner works only with the information it currently gets from the sensors and plans a path that is around a meter long. When the next set of information come in it plans a new piece of the path. The global planner, on the other hand, build a map of the environment. It gathers all the information ever received and then plans a path that reaches to the goal. This happens at a much lower frequency than in the local_planner. Also the global planner is much more costly on the computational side.
And yes, the collision avoidance works only with the local planner. The local planner internally build a histogram where the free and blocked cells are marked. This is then compressed into 1D to serve as a laser scan emulation. The global planner does not use such a histogram.
According to the readme in the docker folder, the docker-compose installation is instructed to be done as
apt install docker-compose
However, the docker-compose installed using apt is 1.8.1
which is outdated.
This produces an error as the docker-compose.yaml
uses version: '3'
which is not compatible with 1.8.1
A better approach is to install the docker-compose using the instructions provided here
@vilhjalmur89 The launch is failing for me with this error message:
[INFO] [WallTime: 1470245012.383872] [0.000000] Calling service /gazebo/spawn_sdf_model
[INFO] [WallTime: 1470245012.432271] [786.962000] Spawn status: SpawnModel: Model pushed to spawn queue, but spawn service timed out waiting for model to appear in simulation under the name iris_depth_camera
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: No space left on device
QFileSystemWatcher: failed to add paths: /home/pixhawk/.gazebo/models
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: No space left on device
QFileSystemWatcher: failed to add paths: /home/pixhawk/catkin_ws/src/Firmware/Tools/sitl_gazebo/models
QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed: No space left on device
QFileSystemWatcher: failed to add paths: /home/pixhawk/catkin_ws/src/detection/models
[spawn_model-8] process has finished cleanly
Hey,
would be nice to have some handshake to control the drone with avoidance for a specific manner and to get back the offboard control when i need it.
i will do it with a multiplexer node for the meantime.
best regards
tobi
I am trying to run local planner on iris drone with r200 camera. I have changed the point cloud topic and it shows it in rviz but it does not move to the goal. If I give the goal through rviz, the goal's coordinates are shown on terminal but drone doesn't move
docker demo fails to build using docker-compose up
---> Running in fe0c65ad0217
Executing: /tmp/tmp.qUUyo5HYwi/gpg.1.sh --keyserver
hkp://ha.pool.sks-keyservers.net:80
--recv-key
421C365BD9FF1F717815A3895523BAEEB01FA116
gpg: requesting key B01FA116 from hkp server ha.pool.sks-keyservers.net
gpg: keyserver timed out
gpg: keyserver receive failed: keyserver error
ERROR: Service 'ubuntu-avoidance' failed to build: The command '/bin/sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list && apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 && apt-get update' returned a non-zero code: 2
PR #51 removes AurelienRoy gazebo models. The README file needs to be updated accordingly
This would assume that the repo is in shape to be publishable.
Hi
I want to use this package with different cameras (other than realsense) and I want to be able to have full control on parameters and topics, however I cant find proper documnetation about the nature of the parameters and topics.
Can someone help :)
As the title says, when I run this command, something goes wrong.The error message is as follows
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/mavros/mavsafety", line 18, in
from mavros import command
File "/opt/ros/kinetic/lib/python2.7/dist-packages/mavros/command.py", line 23, in
from mavros_msgs.srv import CommandLong, CommandInt, CommandBool, CommandHome, CommandTOL, CommandTriggerControl, CommandTriggerInterval
ImportError: cannot import name CommandTriggerInterval
The operating system I am using is ubuntu16.04."rosrun mavros mavsys mode -c OFFBOARD" can execute successfully.The simulation interface can also display normally.
Got this error while testing avoidance (global_planner) in simulator.
The drone does not reach its destination and stops midway. Attached are the logs and screenshots
path-not-found.txt
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.