-
Notifications
You must be signed in to change notification settings - Fork 3
Web Frameworks Library for MRPT (Rachit Tibrewal) #6
Comments
Hello @jolting, @jlblancoc Thanks for giving me this opportunity. I am very excited about the project and working with mrpt community. I would like to contribute to some issues and read codebase till May 5, as my exams will continue till that date, after that I will start working towards the first phase. |
Hi @rachit173, |
I had built it about 20 days ago on 16.04, I will install 18.04 and build
MRPT.
…On Apr 25, 2018 01:40, "Hunter Laux" ***@***.***> wrote:
Hi @rachit173 <https://github.com/rachit173>,
At this point I would just like to confirm that you're able to build MRPT.
If you're using Linux I would recommend Ubuntu 18.04 since the compiler is
already up to date. On Windows of course you'll need MSVC 2017. I don't
personally develop on OS X, so I'm very little help there.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#6 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AXfDdDmc-JrweT5M6-8lzBl836mRFLYmks5tr4bCgaJpZM4Tguu2>
.
|
Sorry for the confusion, i am creating by using my alternate GitHub account y73isc00l.I will continue to use rachit173. I am installing 18.04 now. |
@jolting I have built mrpt-2.0.0 from source on Ubuntu 18.04. Building the apps was giving error so I turned it off for build. Also I tried to install ROS(kinetic-kame) on 18.04 but there seems to be no version available, is there a workaround? |
ROS melodic is not ready yet. You can install a few packages from the archive. If you need to run ROS kinetic you can use a docker container. Do you need that to compare against ros3djs? |
Yes, since 3d visualisation is going to be similar to ros3djs,it would be better to have it in the same os. Also I was thinking about rosmrpt.
On Apr 27, 2018 07:01, Hunter Laux <[email protected]> wrote:
ROS melodic is not ready yet. You can install a few packages from the archive.
If you need to run ROS kinetic you can use a docker container. Melodic
http://wiki.ros.org/docker/Tutorials/GUI
Do you need that to compare against ros3djs?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#6 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AfSEAtKN-aYiUmB57mEFX4VbkZO-LOSuks5tsnT7gaJpZM4Tguu2>.
|
Sure. MRPT does have some ROS bindings. https://github.com/mrpt-ros-pkg/mrpt_navigation ROS has a lot of packages and a large community of users. It's nice to be able to take advantage of all of that. I use ROS all the time. I encourage you to learn all you can from what the RobotWebTools guys have done with rosbridge_server and ros3djs. However, we do want you to implement an MRPT specific version that is not coupled to ROS. Here are a few reasons:
|
Hi @rachit173 !
ROS melodic will be available within a few weeks (during May 2018). I agree with @jolting 's view of making the web interface independent of ROS (although it could be later integrated as a ROS node) for the sake of portability; also, using all format options should be considered for the transport layer: binary blobs, JSON,... The former will probably be much more efficient, so in case of using JSON, there should be good reasons to pick that choice. |
Hi |
Sure. That's the occupancy grid task right? |
It is the publisher/subscriber mechanism for MRPT. |
Cool. You may begin coding any time you wish. |
@rachit173 I'm in California. I presume you're in India, so your morning will probably works best for me. |
I am free tomorrow morning any time from 8:00 Indian Standard Time(GMT+5:30). Any particular hour?
On May 10, 2018 10:03, Hunter Laux <[email protected]> wrote:
@rachit173<https://github.com/rachit173>
Do you have some time in the next few days to have a quick video chat to discuss your project?
I'm in California. I presume you're in India, so your morning will probably works best for me.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#6 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/AfSEAmNKh79a2C3T5j8y4Qfd9uykPLQoks5tw8MygaJpZM4Tguu2>.
|
@jolting @jlblancoc |
ROS core doesn't distribute the messages. It acts like a name service allowing nodes to connect with each other, but the nodes do talk directly with each other for performance reasons. Messages aren't relayed. ZeroMQ has a good description of broker vs brokerless. This project isn't intended to reinvent ROS. There are two actors in this system. A web browser and an MRPT server. A single point to point data channel such as a websocket doesn't need a broker. You can still implement pub/sub at the protocol layer. See ethereum: |
cppethereum is great but it does not have websocket support unlike goeth, but basic code of cppethereum rpc with beast library could solve this. |
Ethereum is just an example of RPC. I would not suggest adding that as a dependency. I prepared this template a while back: You can fork that or start your own. |
Update: |
Ok. You can send a pull request to the mrpt-web repo when you want to review your changes. |
@jolting @jlblancoc I have implemented jsonrpccpp using websockets and pushed it to my fork. The code is based mostly on cppethereum and works with jsonrpc-2.0 js client (I tried with plain websockets). However, it currently does not support SSL and thus does not work with firefox sometimes. I am currently working on it. Currently the file implementing websocket server is CWebSocketJsonRpcServer.h but I suspect that it is not doing a clean exit and thus if I immediately run the server on the same port it gives errors but after sometime it works fine. Any pointers regarding that? Regarding dependencies, beast has a header files in beast/experimental which were giving error when I removed the included files. Also regarding licenses and credits, I have copied lot of code from cppethereum, should i just include their license or put it at start of every code file used? |
To avoid licensing issue you should rewrite the sections you based on cppethereum. Code derived from GPL code cannot be BSD code.
You should use beast as it is shipped with boost 1.66 or later. |
Update : Pushed websocket with SSL.
|
Minimalism is key here. Think of a way to version the protocol. There a reason why MRPT can still read old data files despite all the changes over the years. Backward compatibility requires some thought. I would start with some way of versioning the protocol. Services are actually ROS's way of doing RPC Request/Reply. I would look at that next. The following are related to ROS's pub/sub
I certainly wouldn't start with Pub/Sub. |
check this link for mrpt-web protocol |
Awesome. Documentation is key.
This should be done for MRPT data structures. I think it should be possible to create something like CArchive for JSON. |
👍 for starting documenting things since the beginning in a wiki. Keep that!
Hmmm... After this GSOC project, there will be THREE different serialization protocols:
It would be fantastic if we could somehow centralize all serialization methods in one single place, as far as it may be possible without breaking what currently works. A first simple idea (that needs more thinking, I don't mean it's optimal) would be adding new methods to CArchive to Notice that CArchive is the place where "serialization" happens. That class actually is in charge of interpreting data to/from a text or binary stream, which may be an underlying mrpt::io::CStream or a std::stream. |
Yeah JSON needs a schema. A solution could look like this:
Then you can do.
A little bit more complicated version would be
Clearly, this could get a little bit more declarative, but might as well start with something simple. |
I am facing the following error
main.cpp #include <jsonrpccpp/server/abstractserverconnector.h>
#include <mrpt/poses/CPoint2D.h>
#include <mrpt/serialization/CSerializable.h>
#include <mrpt/rtti/CObject.h>
#include <mrpt/web/CWebSocketUtility.hpp>
#include <mrpt/web/CWebSocketAdvanced.h>
#include <mrpt/web/CModularServer.h>
#include <CRPCRawLogFace.h>
#include <cstdlib>
#include <functional>
#include <thread>
#include <string>
#include <mutex>
#include <memory>
using namespace mrpt::poses;
class CRPCRawLog : public CRPCRawLogAbstract
{
public:
virtual RPCModules implementedModules() const override
{
return RPCModules{RPCModule{"CRPCRawLog","1.0"}};
}
Json::Value Playlist_GetPlaylists() override
{
Json::Value ch;
ch[0]["name"] = "Jabberwock";
ch[0]["chapter"] = 1;
ch[1]["name"] = "Cheshire Cat";
ch[1]["chapter"] = 6;
ch[2]["name"] = "Mad Hatter";
ch[2]["chapter"] = 7;
// create the main object
Json::Value val;
val["book"] = "Alice in Wonderland";
val["year"] = 1865;
val["characters"] = ch;
return ch;
}
Json::Value Playlist_GetItems() override
{
//Added this code
CPoint2D point;
auto jsonPoint = point.serializeTo<Json::Value>();
return jsonPoint;
}
}; CPoint2D.cpp template <typename SCHEMA_CAPABLE>
SCHEMA_CAPABLE CPoint2D::serializeTo() const
{
SCHEMA_CAPABLE out;
out["x"] = m_coords[0];
out["y"] = m_coords[1];
return out;
} Also since templatized virtual functions are not allowed, how to add it to CSerializable.h |
If you get done with the rawlog viewer, the documentation and video tutorials. Then you can work on the Reactive Navigation demo. |
I will start documentation, build configuration of everything. |
Started with something basic: |
👍 looks great! Shouldn't that also include:
|
Thanks, I am going to add tutorials to the manual section |
Looks like the mrpt-web-js unit tests are still broken. |
What do you think about specifying a directory on the server in which rawlogs will be served up from? It is a bit awkward to have to know the name of the file on the file system. |
I think there needs to be a method for connecting to a server other than localhost:5000. |
For the 3d animation is there any way to move the pivot point? |
One thing to note about the 3d scan visualization is that it is capable of rendering multiple sensors. Each sensor will have its own sensor label and have a different sensor height. |
Let me know if the 2D plots work. I'm excited to try them out. |
I have added address bar for specifying the websocket address and port, 2d plots works in map and path generation component and will soon work for individual rawlog (debugging it). For the rawlog address, how do you feel about sending file from client to server using websocket (we can then use file dialog box). If we wish to go with directory, then should I create a specific directory from which the server will give the list of files available for visualisation from the directory? 3d animation currently uses trackballcontrols, for changing the pivot the press the right click and move the mouse. There are other controls out there, https://threejs.org/examples/?q=controls#misc_controls_map, but have their own pros and cons. For 3d scan visualisation, are you aware of some rawlog with multiple sensor data. Then I would check how it functions with the RawLogViewer app and modify the app for multiple sources. |
Just specify a directory with a list of rawlog files. That should be sufficient.
Cool thanks for clarifying.
It's incredibly useful for a 2.5 D representation from depth cameras or the uncommon case of using multiple lidar scanners at different heights. Sometimes the map looks different at various heights. |
For building mrpt-web, serialization file CSchemeArchiveBase is required from mrpt library. How should I prepare it for merging with MRPT ? This would be required for the video demonstration, or for now I could make the video using mrpt build from my own fork.
I wanted to finish off work by August 6. I have interviews on campus from 7 - 12 August, it would be very generous if you could help me in doing so. I would like to continue adding more features and working on the project in general after GSoC. Also GSoC, requires a final submission, in the form of a link. Since this project spans across repositories, can you give an idea of how I should submit the link showing the details of work done. Should I setup a github page? |
Hi,
Did you write some instructions on the ESdoc manual pages? Something really short would be enough... thanks! On the RawLogViewer issue, I'll check my Eigen version just in case it's newer than yours (now I'm on Windows)... |
Yes will push it by today for launching rawalog app I am making a video.
…On Thu, Aug 2, 2018, 13:10 Jose Luis Blanco-Claraco < ***@***.***> wrote:
Hi,
On this:
Instructions to launch the RawlogViewer demo app & a link to the most
relevant parts of the code?
Did you write some instructions on the ESdoc manual pages? Something
really short would be enough... thanks!
On the RawLogViewer issue, I'll check my Eigen version just in case it's
newer than yours (now I'm on Windows)...
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#6 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AXfDdDTqJXEDMYpoTfiHm5FoB11eiVHBks5uMqz6gaJpZM4Tguu2>
.
|
Yes will push it by today (manual pages) , for launching rawalog app I am making a video. |
I've recently opened a few of the sample RawLogs in 18.04. You do have to be careful to compile against GTK3 and there are a few tricks you need to get OpenGL to work with wayland(if you use that by default), but besides that no issues. AFAIK, RawLogViewer doesn't have an issue with the version of Eigen that ships with 18.04. |
Update:
Any pointers regarding final submission link, like what more verticals should be added, best practices would be great :) |
Great video!! 👍 So, apparently you finally solved the crash problem in your rawlog-viewer app, right? It doesn't seem to crash on our tests... |
I havent been able to, will try on ubuntu 16.04 |
Good Job! I'm wondering if there is someplace we can host this as a demo. The websocket server could be containerized. |
Good Job! I'm wondering if there is someplace we can host this as a demo.
The javascript part can go on surge.
The websocket server could be containerized.
Sure, we could host it on mrpt.org in a new subdomain. Just let me
know what do you need exactly, and as far as it's safe we'll do it.
Consider doing it with a front-page which may be the entrypoint to a
number of web demos, even if for now we only have the rawlog-viewer
app...
Cheers!
|
I've cloned all the wiki pages for the following repos. Furthermore, I fixed the unit test for mrpt-web-js. This now uses jest. That was fairly easy to setup. |
Thanks @jolting, I will make the report today and then can continue to work on bugs and issues, after submitting report today. |
@rachit173 : I just gave you write permissions to all related @MRPT repositories, so you can directly contribute there more easily. You may (if you want) use those final URLs in your final report; your contributions are clearly identified there even if that's not your fork, as you know. A proposal @jolting , @rachit173 : would it make sense to add TravisCI / CircleCI to https://github.com/MRPT/mrpt-web as well? |
yes |
I just enabled travis on that repo.
|
Hi, I am back, thanks for your patience and support. I have submitted report, please have a look at it. |
Thanks for the evaluation and opportunity to work with the organization. I wish to work on the existing project as well as MRPT in general. |
Initial Description
Robots are slowly becoming a part of the internet of things, and easy control and universal access will be a step in future of robotics. MRPT’s Web Framework Library should address this problem.A lightweight publisher/subscriber mechanism needs to be created for MRPT. The C++ server library and the javascript library will then leverage this to create further applications. There will be two libraries, a C++ server library for RPC on the robot. Another will be a javascript library which provides modules for such procedure calls.This task involve serialization of existing mrpt objects for JSON transfer, RPC protocol, websocket setup, 3D rendering of objects in js, reusable js components for sending and receiving data from user created app where the user is largely benefitted from easy to use library methods and objects.
The text was updated successfully, but these errors were encountered: