moffkalast / vizanti Goto Github PK
View Code? Open in Web Editor NEWA mission planner and visualizer for controlling outdoor ROS robots.
Home Page: https://wiki.ros.org/vizanti
License: BSD 3-Clause "New" or "Revised" License
A mission planner and visualizer for controlling outdoor ROS robots.
Home Page: https://wiki.ros.org/vizanti
License: BSD 3-Clause "New" or "Revised" License
Currently all TFs are stored perpetually in the consolidation node, which probably isn't best in cases like node restarts where the graph changes and frames should be cleared. Something like 10 seconds should be a good timeout for non-static frames.
Hi,
we use Vizanti alongside RTABMAP. The map is published on topic /rtabmap/map
. The map is not published regularly, but can be triggered with the service. In rviz the map is shown, but it is not in vizanti. Costmaps work perfectly normal. It's strange, because the issue occured about 2-3 weeks ago, when from day to day it stopped working. TFs and other topics are correct, but map is not seen. Do you have any idea what we should change to diagnose what's wrong and how to repair it?
If there's only /tf_static available, it seems that all tf_update dependant widgets will stop rendering unless view_update is sent.
Conceptually visualizers with timestamped data that only need to get the single TF frame at their specific timestamp when they're received don't need to be re-rendered on tf updates anyway, so they should all be switched to updating only when there's new data available or the screen moves. Should be faster too, anyway.
Current transport for CompressedImage messages goes through rosbridge, which does not allow for much throughput before TCP socket congestion occurs.
Ideally this should be switched to aiortc for compact webrtc h264 streaming, given that browser support is solid now, or alternatively the web_video_server for slightly faster MJPEG streaming which would still be slow, but probably wouldn't affect other visualizers nearly as much as the current implementation.
Just wondered, is there any way that you could add the ability to send commands to an api or even add the ability to make a button be able to send a command to a php website etc ?
My robot has an api that i can pre-set waypoints etc that can be called by simply calling a webpage and it runs the php code on that page , so is there a way to make the button widget be able to do something like that ?
Thanks
K
Cool interface btw :-)
Hey there!
I just converted my web app from http to https, and I was using an iframe to get localhost:5000 to my web app to show vizanti inside a page. After the conversion the iframe did not work as i got a mixed content error, because my web app is https and vizanti is http. So I did my research, worked around vizanti's server files. I managed to make vizanti run on https but I cant figure how to make rosbridge run on https or wss. No matter what I do, its always up on http://localhost:5001/. So my question is, is it possible to make rosbridge also run on https so it communicates with the https vizanti and finally show it on my https web app? If so, can you guide me on how to achieve that?
[Problem description]
Server Platform(s):
Client Platform(s):
So , if i use the 2d nav goal then the robot will go where i tell it, if i set a plan using a few waypoints and then ensure the correct topic is selected and press go , nothing happens ? is this featire working at present ? i am using an slamtec athena 2.0 robot , the topic selected is the path plan topic , i select the map as frame and the base_link as teh robot , in fact i have tried them all :-)
Thanks
K
Hi, @MoffKalast,
I've playing some more with Vizanti. It's working very well for me!
One thing I've been trying to understand, though. It seems to me the satellite tiles rotation is inverted.
I've been digging to see if I had something weird going with my TFs,, but I'm pretty sure they are correct at this point.
Can you point me to how I would go about inverting the tile rotation?
Thanks!
While the static serve and rosbridge ports are technically adjustable in the launch files, the client side rosbridge port stays hardcoded to 5001. We should instead set the port number when serving HTML templates somehow, so it matches the one where rosbridge is actually running.
I would like to suggest implementing tabs at the bottom of the web app to facilitate various views and enable the possibility for a full-page button grid layout. This will be particularly useful for robot prototype development, where many actions are manually triggered by the user through buttons, and the current top bar can become easily overcrowded.
Currently TF transforms are treated as latest-is-correct for rendering visualizers since only one set of values is cached, but this while easy to implement is not quite correct, especially for delayed laserscans which can then be rotationally out of sync.
The idea is to instead keep a short history of received transforms and their timestamps, then recreating one that matches by interpolating between the two nearest entries.
Hi, guys,
I've been exploring vizanti as a consolidated web interface for my aerial and ground platforms.
I've been having trouble running SITL instances behind a proxy on my cloud server using the ros2-feature branch.
The best I could get so far is a screen with background colors, but nothing else. It looks like I can reach the base html but none of the js stuff is reachable, maybe?
So far, I've tried to use all sorts of values for base_url
to try and fix this with no success. I'm wondering if I there might a need to set the js files paths (although I thought that's what url_for
did).
Any ideas would be super welcome, I'm at a loss now
Thanks!
The covariance renderer currently only works properly for circular values, needs to be cross-referenced with the rviz implementation and rewritten:
Add decay time and adjustable setting for:
Does Vizanti have a mobile APK? I saw "The application attempts to replicate RViz's orthographic 2D view as closely as possible with a smartphone friendly interface." mentioned in the text. If so, how do I download, install, and connect?
The system for figuring out which tiles should be rendered on screen has some offset issues when moving away from the origin, not rendering all tiles in some cases.
As discussed in #65 (comment), it would be interesting to have extra display modes for map and distance data.
This is an amazing work, bundle of thanks to the contributers.
Recently I faced an issue and I want to bring it to your attention.
Remote device is running a ros1 system in a virtual network and the intention is to monitor it remotely.
vizanti fails to get the tf data from the remote device and resultantly all tf related topics fail to get subscribed.
BUT
If the vizanti server is launched via ssh then all works fine.
Is there any plan on adding the tilt capability so one can also change the orientiation of the map, apart from just pan and zoom? Thank in advanced, best regards.
Please enhance the code to display the camera images on web view
Right now they're rendered in the latest known position of the frame, since browser time and ros time aren't synced anyway, but it could at least render them based on time received.
TODO widgets:
For rviz parity:
Other:
Continuation of the discussion started here.
Short description: cost map rendering is broken and not consistent when using RWS or Rosbridge. Coloured costmap renders ok when using RWS but not ok when using Rosbridge, and vice versa.
Top image - RWS, bottom - Rosbridge:
Here is the bag I've recorded, I tried to strip non-relevant topics and keep it short to decrease size. I noticed that the robot model is stuck when playing from the bag, but it's consistent between RWS and Rosbridge.
Download rec.bag.7z from Google Drive (123 MB, too large for Github attachment)
When adding a new widget or configuring an existing widget in Safari on iOS, tapping on the background to close the setup modals does not work. The only way to get back to the default view is to reload the page, restart the web app or to remove the widget.
Tested under iOS 16.5.1 on an iPhone and iPad.
When moving far away from the fixed frame origin the navsat tile transforms start to slip sideways (most likely) due to WGS84 to metric transformation inaccuracy so tiles don't render properly. It is somewhat questionable if the metric frame would even make sense that far out, since there's typically no accounting for the spherical shape of the ground.
Apparently Apple's ATS blocks fetch and XHR requests over HTTP, which is a bit of a problem if you're working offline without a way to access a root certificate authority. For macOS a known workaround is to modify the Info.plist file to add an exception.
The workaround for iOS mobile devices is something like this: create a self signed SSL cert, reconfigure rosbridge and the flask server to use it, get the key onto the device and install it, set the cert as a trusted root authority. Repeat every time the cert expires.
The tile zoom is set to 19 (max for OSM) by default and would need an input box to set it to anything else.
The Grid widget can only show grids in the fixed frame right now due to some rendering limitations.
Hi, thanks for the great work!
I would like to use Vizanti under some subfolder like this: http://<host_ip>/vizanti
Possible adding a base URL option or use relative URLs?
The ROS 2 node manager should support interacting with the supposed life cycle architecture.
I.e. executing these sort of subprocess commands by proxy:
ros2 lifecycle set /nodename cleanup
ros2 lifecycle set /nodename shutdown
ros2 lifecycle set /nodename destroy
Hi,
last time I encontered an issue. I launched some nodes right after booting the system, and they are perfectly fine to set parameters
imu presented above is only one if few examples.
But there are some nodes which are launched after startup by user and they are not able to load parameters
I don't know if I am doing something wrong, but some parameters are not loading and they are important for me. I can changed them with classic ros2 param set
but I would prefer to do it through gui. I will be grateful for every hint for fixing this.
Hello @MoffKalast
Vizanti has been a great tool for the project I'm working on. I have setup the layout the way I want with the widgets I need, but if I open Vizanti on a new browser, the layout goes back to the default one and I have to load my layout file or re-add the widgets.
How can I change the Default Layout to the one I want to use, so it loads automatically the widgets I want when I'm on a new browser?
Here's the layout I'm using now:
robot_config.json
Does this support ROS 2?
Some files are not installed.
Should install all Python scripts, public folder, and launch files.
The server.py is using ../public folder, so its install destination would need to consider this.
Thank you!
~/ros2_ws/src/vizanti/vizanti_server/vizanti_server# ros2 launch vizanti_server vizanti_server.launch.py
[vizanti_flask_node]: Public directory set as ../public
~# ros2 launch vizanti_server vizanti_server.launch.py
[vizanti_flask_node]: Public directory set as /root/ros2_ws/install/vizanti_server/share/vizanti_server/public/
A possible solution:
from pathlib import Path
def get_public_dir():
p = Path(__file__).resolve()
path = p.parents[1] / 'public'
if path.exists():
return path #for --symlink-install
return get_package_share_directory('vizanti_server')+ '/public/'
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.